iOS崩溃问题-SIGSEGV
在iOS崩溃问题-SIGSEGV,ios,core-data,crash,nssortdescriptor,Ios,Core Data,Crash,Nssortdescriptor,在NSMutableSet上使用NSSortDescriptor时,我的应用程序崩溃 这是密码 NSArray *sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:EIKNewsHeadlineAttributeHeadlineId ascending:YES]]; NSArray *orderedHeadlines = [weakSelf.storedHeadlines sortedArrayUsingDescriptor
NSMutableSet
上使用NSSortDescriptor
时,我的应用程序崩溃
这是密码
NSArray *sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:EIKNewsHeadlineAttributeHeadlineId ascending:YES]];
NSArray *orderedHeadlines = [weakSelf.storedHeadlines sortedArrayUsingDescriptors:sortDescriptors];
这里storedHeadlines是NSMutableSet
,我的排序描述符键是EIKNewsHeadlineAttributeHeadlineId
,它是一个NSString@“headlineId”
我的可变集包含特定类类型的对象,该类有一个名为headlineId
的属性,我正试图对可变集进行排序
我在私有队列上的performBlock
中执行此排序。
我检查了我的weakSelf
和NSMutableSet
。两者都不是零
导致问题的原因是什么?从崩溃日志中可以看出,数组中的某些元素不是
NSString
。表示这一点的行是objc\u msgSend()选择器名称:length
这意味着数组中的对象不响应长度
选择器
我认为问题在于JSON到可变集的解析。如果在排序之前打印集合的内容,可能会让您知道数组中哪些对象是错误的
你能发布解析JSON的代码吗
如果不可能,您可以在排序之前过滤集合,从崩溃日志中删除所有非
NSString
类型的元素。看起来数组中的某些元素不是NSString
。表示这一点的行是objc\u msgSend()选择器名称:length
这意味着数组中的对象不响应长度
选择器
我认为问题在于JSON到可变集的解析。如果在排序之前打印集合的内容,可能会让您知道数组中哪些对象是错误的
你能发布解析JSON的代码吗
如果不可能,您可以在排序之前过滤集合,消除所有非NSString类型的元素。您是否看到任何崩溃日志?@kapsym请在此处查看崩溃日志您是否看到任何崩溃日志?@kapsym请在此处查看崩溃日志,正如您所说的,阵列中的某些元素可能不是NSStr类型ing。我的问题是如何将非NSString分配给希望NSString重现问题的集合?我在iPhone或iPad上没有看到这种崩溃,但我们的客户面临着这个问题。感谢您的明确解释。“objc_msgSend()选择器名称:length”的解释“这正是我想要的。感谢您清除了这个问题并进行了可能的解决。正如您所说的,数组中的某些元素可能不是NSString类型。我的问题是,如何将非NSString分配给希望NSString重现问题的集合?我并没有在我的iphone或iPad上看到这种崩溃,但我们的客户正面临着这个问题。感谢您的明确解释。“objc_msgSend()选择器名称:length”的解释正是我想要的。谢谢你清除了这一点,并为可能的解决办法。