iOS Simulator 6.0 使用自定义排序描述符崩溃

Posted

技术标签:

【中文标题】iOS Simulator 6.0 使用自定义排序描述符崩溃【英文标题】:iOS Simulator 6.0 crashes with custom sort descriptor 【发布时间】:2012-09-27 18:57:33 【问题描述】:

t创建了一个Master-Detail Application项目后,我在MasterViewController.m中替换了下面这行代码,

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 代码模板所做的唯一更改。当我在 Simulator 6.0 上运行它时,获取数据时代码崩溃...

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

使用 objc_exception_throw。顺便说一句,此代码适用于 Simulator 5.1。知道有什么问题吗?提前致谢。

【问题讨论】:

【参考方案1】:

基于 Objective-C 的排序描述符不能用于获取请求。

来自“核心数据编程指南”:

... 总而言之,如果您直接执行 fetch,您应该 通常不会将基于 Objective-C 的谓词或排序描述符添加到 获取请求。相反,您应该将这些应用于 获取。

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

【讨论】:

@CodeMonkey:我无法解释为什么它以前有效并且不再有效。我只知道文档声明您不应该使用基于 Objective-C 的排序描述符来获取请求。原因是(我认为)过滤和排序已经由 SQLite 层完成。

以上是关于iOS Simulator 6.0 使用自定义排序描述符崩溃的主要内容,如果未能解决你的问题,请参考以下文章

iOS Simulator 自定义 City Run 在 Xcode 之外

warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 6.0, but

识别 iOS 文件包(在 Simulator 和 Finder 中)

无法在 Simulator XCode 6.0 中运行应用程序

找不到目标'x86_64-apple-ios-simulator'的模块'MyCustomFramework';找到:arm64,armv7-apple-ios,arm

IOS 6.0+ Autolayout — UITableViewCell 高度调整