2

简而言之 :

获取实体并根据@property哪个不是排序它们attribute将在第二次运行时导致错误(NSDictionaryMapNode涉及)。

这是正常的还是错误的?您对此有何评论或帮助?


在长:

情况如下。

我有一个Entity具有两个属性attribute1attribute2.

我已经生成了[1]一个类Entity.m并在其中添加了一个@property名为myProperty. 因此,myProperty@property我班级的一个,Entity.m但不是实体的一个属性Entity。顺便说一句,myPropertyreadonly(假设它类似于attribute1attribute2.

现在,我执行以下操作:

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] ;
  • 第一次执行此代码时,我没有任何错误。

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

    [<NSDictionaryMapNode 0x1020cf310> valueForUndefinedKey:]: this class is not key value coding-compliant for the key myProperty.
    

我知道问题出在myProperty不是Entity. 我的帖子的目的是提出这种情况,并知道您是否会对这种情况发表任何评论。

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

4

1 回答 1

2

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

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


请参阅核心数据编程指南Fetch Predicates and Sort Descriptors部分

于 2013-10-16T11:08:31.593 回答