2012-09-27 34 views
1

tAfter创建主从应用程序项目,我更换了下面的代码行,在MasterViewController.m,iPhone模拟器6.0崩溃,并自定义排序描述符

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"timeStamp" ascending:NO]; 

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] 
      initWithKey:@"timeStamp" 
       ascending:YES 
      comparator:^NSComparisonResult (id obj1, id obj2) 
      { 
       return NSOrderedSame; 
      }]; 

这是我对Apple代码模板做的唯一更改。当我在模拟器6.0上运行它时,代码在读取数据时崩溃...

if (![self.fetchedResultsController performFetch:&error]) { 

with objc_exception_throw。顺便说一句,这段代码适用于Simulator 5.1。任何想法有什么不对?提前致谢。

回答

1

基于Objective-C的排序描述符不能与提取请求一起使用。

从“核心数据编程指南”:

...总之,不过,如果你执行一个直接读取,您应该 通常不会增加目标为基础的C-谓词或排序描述符 获取请求。相反,您应该将这些应用于获取结果 。

顺便说一句,你真的想要一个排序描述符,使所有的对象相等吗?

+0

@CodeMonkey:我无法解释为什么它以前工作,并不再工作。我只知道该文档指出你不应该使用基于Objective-C的排序描述符作为提取请求。原因是(我认为)过滤和排序已经由SQLite层完成。 –