简而言之:
获取实体并根据不是@property
的{{1}}对其进行排序将导致第二次运行时出现错误(包含attribute
)。
是正常还是错误?你对此有任何评论或帮助吗?
长期:
情况如下。
我的NSDictionaryMapNode
有两个属性Entity
和attribute1
。
我已经生成了 [1] 一个classe attribute2
,并为其添加了一个名为Entity.m
的{{1}}。因此,@property
是我的班级myProperty
的{{1}},但不是实体myProperty
的属性。顺便说一句,@property
是Entity.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] ;
的属性。我的帖子的目的是提出这种情况,并知道你是否会对这种情况发表评论。
答案 0 :(得分:2)
这是众所周知的。您无法对商店中不持久的任何内容进行排序。它应该永远不会工作(第一次工作意味着你没有MOC或类似的东西)。
您应该向持久性实体添加新属性。执行类似实现willSave
或观察依赖键并使用该触发器更新新属性(myProperty
)的值。
请参阅Core Data Programming Guide
的Fetch Predicates and Sort Descriptors
部分