使用Core Data制作排序的fetchRequest有什么限制?

时间:2013-10-16 10:29:19

标签: ios cocoa sorting core-data nsfetchrequest


简而言之:

获取实体并根据不是@property的{​​{1}}对其进行排序将导致第二次运行时出现错误(包含attribute)。

是正常还是错误?你对此有任何评论或帮助吗?


长期:

情况如下。

我的NSDictionaryMapNode有两个属性Entityattribute1

我已经生成了 [1] 一个classe attribute2,并为其添加了一个名为Entity.m的{​​{1}}。因此,@property是我的班级myProperty的{​​{1}},但不是实体myProperty的属性。顺便说一句,@propertyEntity.m(假设它与Entity联系在一起myProperty

现在,我执行以下操作:

readonly
  • 第一次执行此代码时,我没有任何错误。

  • 第二次,我收到以下错误:

    attribute1

我了解问题来自attribute2不属于NSManagedObjectContext * myContext = ... ; NSFetchRequest * myRequest = [NSFetchRequest fetchRequestWithEntityName:@"Entity"]; NSSortDescriptor * mySortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"myProperty" ascending:YES] ; NSError *error ; [myRequest setSortDescriptors:@[mySortDescriptor]] ; NSArray * result = [myContext executeFetchRequest:myRequest error:&error] ; 的属性。我的帖子的目的是提出这种情况,并知道你是否会对这种情况发表评论。

[1]使用mogenerator(https://github.com/rentzsch/mogenerator)。

1 个答案:

答案 0 :(得分:2)

这是众所周知的。您无法对商店中不持久的任何内容进行排序。它应该永远不会工作(第一次工作意味着你没有MOC或类似的东西)。

您应该向持久性实体添加新属性。执行类似实现willSave或观察依赖键并使用该触发器更新新属性(myProperty)的值。


请参阅Core Data Programming Guide

Fetch Predicates and Sort Descriptors部分