【发布时间】:2010-12-23 17:29:55
【问题描述】:
我在我的组合框数据源数组中包含了一个占位符 [NSNull null],这样我就可以允许用户选择“无”,而无需实际存储一个空白对象。问题是当一个真实的对象被添加到数据源数组中时,我需要对数组进行排序:
[self.mutableArrayOfStrings sortUsingSelector:@selector(caseInsensitiveCompare:)];
这一行产生一个 SIGKILL。
NSManagedObject 的伴生数组也有同样的问题,它也有一个占位符 NSNull:
NSSortDescriptor *sortDescriptorName = [[NSSortDescriptor alloc] initWithKey:@“name” ascending:YES selector:@selector(caseInsensitiveCompare:)];
NSArray *sortDescriptorsNames = [[NSArray alloc] initWithObjects: sortDescriptorName, nil];
[self.mutableArrayOfMOs sortUsingDescriptors:sortDescriptorsNames];
如果 mutableArrayOfMOs 包含一个 NSNull 对象,此行也会产生一个 SIGKILL。
当然,我可以将非空对象复制到一个单独的数组中,对其进行排序,重新插入空对象,然后将其分配给数组属性——但这会使我的代码变得混乱。难道不应该有一些排序方法不会让 NSNull 窒息吗?毕竟,Apple 已经明确提供了 NSNull 以允许我们将其包含在数组中。
【问题讨论】:
标签: objective-c null nsmutablearray nssortdescriptor