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