Почему создание основных данных NSManagedObject с свойствами, но без сопутствующего переменного экземпляра?

голоса
1

Точно так, как говорит название, почему не делает основные данные создавать экземпляры NSManagedObject со свойствами для атрибута каждого субъекта, но не сопутствующая переменная экземпляры? Проблема заключается в том, я хотел бы использовать некоторые из моих «субъектов» в типичной Alloc / инициализации стиля моды в некоторых частях моего кода. Не используя выборки / контекст Core Data для создания / магазина.

Я полагаю, я мог бы остаться без переменных экземпляра, но будет больно, чтобы добавить их? Могу ли я изменить @dynamic к @synthesize, так что я могу использовать KVC на моих свойств / Ивар?

Может быть, я совершенно неправильно в попытке использовать один из моих сущностей Core Data в некоторых частях моего кода без использования API данных ядра. Тем не менее довольно новыми для него, чтобы понять, когда я могу идти своим путем.

Задан 04/08/2009 в 02:54
источник пользователем
На других языках...                            


2 ответов

голоса
16

Причина, по которой не используется Ивар в том, что эти данные не существует. При загрузке объекта не может винить во всех своих данных. Ивар просто переменные, если вы и писать к ним NSManagedObject не имеет шанса неисправность в стоимости, если она не была загружена еще. Via аксессорах NSManagedObject имеет точку дроссельной заслонки, что позволяет ему считывать данные с диска, если он не был нарушенными в еще, что означает, что ваш график объект может быть приведена в лениво. В противном случае вам нужно будет принести в каждом подключенном объекте.

Из-за этого, вы не можете просто добавить Ивар, они не будут иметь значения, которые вы хотите. Точно так же вы не можете изменить от @dynamic к @synthesized, то не будет вести себя правильно. Динамические реализации собственности, предоставляемые CoreData полностью КВЦ и КВО совместимый в любом случае.

Если вы хотите получить доступ к значениям без отключения КВО или КЦА вы можете получить доступ к «примитивному» значению. Вы делаете это в одном из двух способов. Вы используете primitiveValueForKey: и setPrimitive: valueForKey: или можно просто объявить примитивный и пусть CD обеспечивают динамические реализации (из документации )

@interface Department : NSManagedObject
{
}
@property(nonatomic, retain) NSString *name;
@end

@interface Department (PrimitiveAccessors)
- (NSString *)primitiveName;
- (void)setPrimitiveName:(NSString *)newName;
@end
Ответил 04/08/2009 в 04:11
источник пользователем

голоса
3

Вам не нужно переменные экземпляра с Core Data. Управляемый объект сохраняет эти значения в другом месте.

Я никогда не получил очень далеко с Core Data, но если я правильно помню, вы должны использовать primitiveValueForKey:и setPrimitiveValue:forKey:для выполнения этих доступов от ваших методов доступа. (За пределы ваших аксессоров, вы должны использовать либо аксессор сам или valueForKey:/ setValue:forKey:вместо этого.)

Ответил 04/08/2009 в 03:15
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more