【发布时间】:2014-03-31 01:04:07
【问题描述】:
所以我使用以下按字母顺序对我的 NSMutableArray 进行排序,效果很好。
[myArray sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
但这正在对我的数组做一些事情,因为在它在以下行之后崩溃后我无法添加到它
[myArray addObject:textBox.text];
我收到以下错误
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
我知道它与排序函数有关,因为这个问题仅在我修改可变数组时出现!谁能理解为什么会这样?
不知道为什么它说它是一个不可变对象绝对是我正在使用的 mutableArray..
@property (strong, nonatomic) NSMutableArray *myArray;
剩下的代码就到这里
@synthesize myArray;
myArray=[[NSMutableArray alloc] initWithObjects:@"numberOne",@"numberTwo",@"numberThree",@"numberFour",@"numberFive", nil];
NSUserDefault 代码
myUserDefault = [NSUserDefaults standardUserDefaults];
myArray = [myUserDefault objectForKey:@"stuff"];
[myUserDefault synchronize];
【问题讨论】:
-
显示你实际创建数组的代码。
-
发布完整版本的代码,包括如何初始化 speciesArray,这将提供线索,因为现在基本上错误消息是说 myArray 是 NSArray 而不是 NSMutableArray。 Not NSArray 也有 sortUsingSelector 并返回排序后的数组。您应该确保 myArray 实际上是 NSMutableArray 而不是 NSArray
-
你能显示初始化属性的代码行吗?
-
@InsertWittyName 已发布!
-
您发布的代码中没有任何内容可以将可变数组转换为不可变数组。在对它进行排序和尝试添加对象之间,您是否对这个数组进行了其他操作?
标签: ios sorting nsmutablearray alphabetical