Я нашел окончательный ответ от Подробнее о разработке iPhone 3 Дейва Марка и Джеффа ЛеМарша.
Если вас действительно беспокоит, что вы используете метод на NSEntityDescrpiton
вместо NSManagedObjectContext
для вставки нового объекта в NSManagedObjectContext
, вы можете использовать категорию для добавления метода экземпляра до NSManagedObjectContext
.
Создайте два новых текстовых файла с именами NSManagedObject-Insert.h и NSManagedObject-Insert.m .
В NSManagedObject-Insert.h введите следующий код:
import <Cocoa/Cocoa.h>
@interface NSManagedObjectContext (insert)
- (NSManagedObject *)insertNewEntityWithName:(NSString *)name;
@end
В NSManagedObject-Insert.m , поместите этот код:
#import "NSManagedObjectContext-insert.h"
@implementation NSManagedObjectContext (insert)
- (NSManagedObject *)insertNewEntityWithName:(NSString *)name
{
return [NSEntityDescription insertNewObjectForEntityForName:name inManagedObjectContext:self];
}
@end
Вы можете импортировать NSManagedObject-Insert.h куда угодно, чтобы использовать этот новый метод. Затем замените вызовы вставки на NSEntityDescription
, как этот:
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
с более коротким и интуитивно понятным:
[context insertNewEntityWithName:[entity name]];
Разве категории не велики?