2

当我尝试向我的 NSMutableArray 插入一个对象时,我收到“程序接收信号:SIGABRT”错误,但我不明白为什么。

这是我的代码,特别insertObject:value是导致错误的代码。

NSMutableDictionary *myDictionary = [NSMutableDictionary dictionary];
[myDictionary setValue:valueName.text forKey:kValueName];
[myDictionary setObject:subValuesList forKey:kSubValuesList];

MyAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
int position = appDelegate.position;

NSMutableArray *valuesList = [[NSUserDefaults standardUserDefaults] objectForKey:kValuesArray];
[valuesList insertObject:myDictionary atIndex:position];
4

2 回答 2

7

从返回的值NSUserDefaults是不可变的,即使您将可变对象设置为值。

NSUserDefaults. 幸运的是,它NSArray符合NSMutableCopying协议,因此您只需向mutableCopy数组发送一条消息:

NSMutableArray *valuesList = [[[NSUserDefaults standardUserDefaults] objectForKey:kValuesArray] mutableCopy];

请记住,您拥有根据mutableCopy内存管理规则返回的对象。换句话说,你需要在完成后释放它。

于 2011-10-18T22:00:24.293 回答
0

您必须使用 NSData 保存和检索数组。可能重复。

可以在 iPhone 上使用 NSUserDefaults 保存整数数组吗?

于 2011-10-18T22:02:09.270 回答