2016-03-04 3 views
0

У меня есть класс данных ядра с этой варом:Основные данные управляемые вара, кажется, инициализируются вместо нулевой

@NSManaged var tags: NSSet? 

Проблема в том, что, когда класс извлекается из хранилища данных, метки переменных вместо nil, инициализируется пустым объектом NSSet.

Это нормально?

Я думал, что это будет ноль.

Обновление и вопрос: Я проверил с поведением базового атрибута данных, и он равен нулю после извлечения.

Возможно ли, что для отношений, которые являются NSSet/NSOrderedSet, данные ядра не используют nil, а инициализируют пустой набор?

ответ

1

Ядро данных использует разломообразования:

documentation

По сути то, что происходит здесь:

A managed object fault is an instance of the appropriate class, but its persistent variables are not yet initialized.

A relationship fault is a subclass of the collection class that represents the relationship.

Таким образом, вы могли бы иметь экземпляр набора, но вы не будете знать, что такое persisten значение пока вы не получите доступ к нему.

Надеюсь, что это поможет

+0

Thanks Ron. Поэтому кажется, что я должен проверить длину набора, а не ноль, в таких случаях, как мой. И для управляемых объектов я должен проверить «isFault». Это правильно? – Shay

+0

@ Если вы не должны звонить, это ошибка напрямую. Как только вы получаете доступ к управляемому объекту, ошибка должна срабатывать и разрешать его. Так что счетчик будет работать, чтобы узнать, сколько там тегов. – Ron

+0

Если вы хотите просто подсчитать теги перед их загрузкой, вы можете использовать countForFetchRequest или NSManagedObjectContext https://developer.apple.com/library/ios/documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObjectContext_Class/index.html # // apple_ref/occ/instm/NSManagedObjectContext/countForFetchRequest: ошибка: – Ron

Смежные вопросы