Tôi đã tìm thấy câu trả lời dứt khoát từ Phát triển iPhone 3 khác bởi Dave Mark và Jeff LeMarche.
Nếu nó thực sự làm phiền bạn mà bạn sử dụng một phương pháp trên NSEntityDescrpiton
hơn là trên NSManagedObjectContext
để chèn một đối tượng mới vào một NSManagedObjectContext
, bạn có thể sử dụng một loại để thêm một phương pháp dụ để NSManagedObjectContext
.
Tạo hai tệp văn bản mới có tên NSManagedObject-Insert.h và NSManagedObject-Insert.m.
Trong NSManagedObject-Insert.h, đặt đoạn mã sau:
import <Cocoa/Cocoa.h>
@interface NSManagedObjectContext (insert)
- (NSManagedObject *)insertNewEntityWithName:(NSString *)name;
@end
Trong NSManagedObject-Insert.m, đặt mã này:
#import "NSManagedObjectContext-insert.h"
@implementation NSManagedObjectContext (insert)
- (NSManagedObject *)insertNewEntityWithName:(NSString *)name
{
return [NSEntityDescription insertNewObjectForEntityForName:name inManagedObjectContext:self];
}
@end
Bạn có thể nhập NSManagedObject -Insert.h ở bất kỳ nơi nào bạn muốn sử dụng phương pháp mới này.Sau đó thay thế các cuộc gọi chèn chống NSEntityDescription
, như thế này:
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
với ngắn hơn và trực quan hơn một:
[context insertNewEntityWithName:[entity name]];
Không phải loại lớn?
Nguồn
2010-07-03 05:40:21
Oh yeah, nhưng đừng bao giờ ghi đè 'initWithEntity: insertIntoManagedObjectContext:'. 'awakeFromInsert' là nơi thích hợp để khởi tạo. – Alex