2016-03-04 40 views
0

我有一个核心的数据类与此变种:核心数据似乎不是初始化的零

@NSManaged var tags: NSSet? 

的问题是,当类是从数据存储,标签变量,而不是牵强无,用空的NSSet对象初始化。

这种行为是否正常?

我认为这将是零。

更新和问题: 我检查了一个核心数据属性的行为,它在提取后为零。

是否有可能为NSSet/NSOrderedSet的关系核心数据不使用零,但初始化一个空集?

回答

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

感谢罗恩。因此,在我的情况下,我似乎必须检查套件的长度,而不是零。而对于托管对象,我必须检查“isFault”。这是正确的吗? – Shay

+0

@Shay你不应该直接打电话是故障。一旦你访问了一个管理对象的关系,该故障应该触发并解决它。因此,计数将有助于了解有多少标签。 – 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:error: – Ron