iOS CRASH 问题 - SIGSEGV

标签 ios core-data crash nssortdescriptor

我的应用程序在 NSMutableSet 上使用 NSSortDescriptor 时崩溃。

这是代码

NSArray *sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:EIKNewsHeadlineAttributeHeadlineId ascending:YES]];

NSArray *orderedHeadlines = [weakSelf.storedHeadlines sortedArrayUsingDescriptors:sortDescriptors];

这里的 storedHeadlines 是 NSMutableSet,我的排序描述符键是 EIKNewsHeadlineAttributeHeadlineId,它是一个 NSString @"headlineId”

我的可变集包含特定类类型的对象,并且该类有一个名为 headlineId 的属性,我试图根据该属性对可变集进行排序。

我在私有(private)队列的 performBlock 中执行此排序。 我检查了我的 weakSelfNSMutableSet。两者都不是零。

是什么导致了这个问题?

最佳答案

从崩溃日志来看,数组中的某些元素似乎不是 NSString。这行是 objc_msgSend() selector name: length

这意味着数组中的对象不响应length 选择器。

我认为问题出在 JSON 到可变集的解析中。如果您要在排序之前打印集合的内容,它可能会让您了解数组中的哪些对象是错误的。

您可以发布解析 JSON 的代码吗?

如果不可能,您可以在排序前过滤集合,消除所有不是 NSString 类型的元素

关于iOS CRASH 问题 - SIGSEGV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45233944/

相关文章:

ios - 带有图像和文本的 UIButton 可能吗?

iphone - 使用 NSPredicate 对多个实体执行查找

iphone - 如何知道从应用商店更新后第一个应用程序是否启动

ios - 取 NSString 占位符的 C 函数宏

ios - 我如何在设备上测试我的 NativeScript 应用程序,我是在 Windows 中吗?

ios - NSFetchedResultsController 不会自动重新加载数据

ios - 将表的行数设置为特定实体

android - 我的 Android cocos2d-x 游戏在某些三星手机上崩溃,但 logcat 未显示崩溃位置

c++ - 使 C++ 程序崩溃的最简单方法是什么?

ios - 是否有针对移动应用的单一 "analytics/marketing"SDK 解决方案?