我的应用程序在 NSMutableSet
上使用 NSSortDescriptor
时崩溃。
这是代码
NSArray *sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:EIKNewsHeadlineAttributeHeadlineId ascending:YES]];
NSArray *orderedHeadlines = [weakSelf.storedHeadlines sortedArrayUsingDescriptors:sortDescriptors];
这里的 storedHeadlines 是 NSMutableSet
,我的排序描述符键是 EIKNewsHeadlineAttributeHeadlineId
,它是一个 NSString @"headlineId”
。
我的可变集包含特定类类型的对象,并且该类有一个名为 headlineId
的属性,我试图根据该属性对可变集进行排序。
我在私有(private)队列的 performBlock
中执行此排序。
我检查了我的 weakSelf
和 NSMutableSet
。两者都不是零。
是什么导致了这个问题?
最佳答案
从崩溃日志来看,数组中的某些元素似乎不是 NSString
。这行是 objc_msgSend() selector name: length
这意味着数组中的对象不响应length
选择器。
我认为问题出在 JSON 到可变集的解析中。如果您要在排序之前打印集合的内容,它可能会让您了解数组中的哪些对象是错误的。
您可以发布解析 JSON 的代码吗?
如果不可能,您可以在排序前过滤集合,消除所有不是 NSString
类型的元素
关于iOS CRASH 问题 - SIGSEGV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45233944/