这是我第一次尝试使用 NSUserDefaults。我已经阅读了 stackoverflow 中关于这个主题的所有问题和答案,但仍然无法让它发挥作用。我一定缺少一些基本的东西。数组 (allContacts) 仅包含一些姓名和电话号码。除非我误解发生了什么,否则这两个字段都是 NSStrings。还是它们只是指向字符串的指针?如果是这种情况,我将如何将它们转换为实际的 NSString?这是我保存数组的代码:
- (BOOL)saveChanges
{
NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithArray:allContacts];
[[NSUserDefaults standardUserDefaults] setObject:mutableArray forKey:@"allContacts"];
[[NSUserDefaults standardUserDefaults] synchronize];
return 1;
}
这是我的日志:
2013-08-07 15:48:17.568 ImOK[5515:907] *** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '(
"Brad Pitt, 1-917-297-1234",
"Marilyn Monroe, 9179291234"
)' of class '__NSArrayM'. Note that dictionaries and arrays in property lists must also contain only property values.
提前感谢您的帮助。
这段代码“for(id contact in allContacts) { NSLog(@"%@", [contact class]); }”给了我:
2013-08-07 17:11:30.845 ImOK[5569:907] Contacts
2013-08-07 17:11:30.854 ImOK[5569:907] Contacts
所以我猜它们不是有效的属性值。顺便说一句,我没有明智的理由尝试将数组保存为 NSMutableArray。我只是在做实验。