核心数据在获取时是不是返回对象AsFaults = NO 也有错误关系?

Posted

技术标签:

【中文标题】核心数据在获取时是不是返回对象AsFaults = NO 也有错误关系?【英文标题】:Core Data does returnsObjectsAsFaults = NO also fault relationships upon fetch?核心数据在获取时是否返回对象AsFaults = NO 也有错误关系? 【发布时间】:2011-08-10 15:59:50 【问题描述】:

我在获取时对我的托管对象的所有属性进行了故障处理以获得性能优势,因为我将全部使用它们并且结果集很小。但是,在获取过程中关系是否也有问题?

【问题讨论】:

【参考方案1】:

查看the documentation 它只提到了预取的属性,而不是关系。我敢打赌关系仍然有问题。


但是,您可以轻松找到自己 - 只需查看日志中的对象 :)

例如,如果您的 Company has many Employees,并且您要求一个公司,则在调试时(假设您没有覆盖 description 方法)

NSLog(@"%@", company);

你会得到类似的东西

<Company 0x123456
  name : "Company Name"
  employees : <NSSet data:fault>
>

如果没有故障,您会看到员工列表而不是单词 故障 :)

【讨论】:

【参考方案2】:

我意识到这个问题已经很老了,但看起来 Apple 添加了一个选项来设置哪些关系应该被预取而不是出错:

这是取自 NSFetchRequest.h 的 sn-p

/* Returns/sets an array of relationship keypaths to prefetch along with the entity for the request.  The array contains keypath strings in NSKeyValueCoding notation, as you would normally use with valueForKeyPath.  (Prefetching allows Core Data to obtain developer-specified related objects in a single fetch (per entity), rather than incurring subsequent access to the store for each individual record as their faults are tripped.)  Defaults to an empty array (no prefetching.) 
*/
- (NSArray *)relationshipKeyPathsForPrefetching NS_AVAILABLE(10_5,3_0);
- (void)setRelationshipKeyPathsForPrefetching:(NSArray *)keys NS_AVAILABLE(10_5,3_0);

【讨论】:

以上是关于核心数据在获取时是不是返回对象AsFaults = NO 也有错误关系?的主要内容,如果未能解决你的问题,请参考以下文章

获取一对多的核心数据关系第一次返回正确的对象,但其他时候返回空集

从核心数据获取请求中排除反向关系

尝试在.net核心中绑定下拉列表时在ajax jquery中获取空对象列表

iOS 设备上的核心日期获取请求

核心数据在启动之间不持久

使用特定对象而不是对象属性获取核心数据