写入 NSUserDefault 和 .plist 失败
Posted
技术标签:
【中文标题】写入 NSUserDefault 和 .plist 失败【英文标题】:Writing in NSUserDefault and .plist failed 【发布时间】:2012-08-05 22:24:15 【问题描述】:我无法在 .plist 和 NSUser 默认文件中获取一些信息。 对于我已经发布的 .plist,但似乎没有任何问题:
How to update an array set into the .plist dictionary
对于 NSUser Default,我正在做这样的事情:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *userSettings = [[NSMutableArray alloc]initWithArray:[[defaults objectForKey:@"userSettings"]mutableCopy]];
[userSettings addObject:userSettingsArray];//adding an array into my userSettingsArray (declared higher in the code)
[defaults setValue:userSettings forKey:@"userSettings"];
[defaults synchronize];
我在徘徊,Xcode 中是否有任何选项允许或不允许用户写入应用程序文件夹?
我有点卡在这里
感谢您的帮助,
提姆
【问题讨论】:
究竟是什么不工作?到目前为止似乎是正确的...... 是什么让您断定您的设置没有被存储?代码看起来相当混乱;mutableCopy
完全是多余的,您正在构建一个数组数组?
@Mario:数组没有被复制,当我想检索存储的信息时,数组是空的。
@Tommy,我需要存储多个用户信息(数组数组)
【参考方案1】:
使用
[defaults setObject:userSettings forKey:@"userSettings"];
而不是
[defaults setValue:userSettings forKey:@"userSettings"];
【讨论】:
不,我无法在 UserDefaults 中写入数组。这是我从 NSUserDefault 中获取数组的代码: NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSArray *userSettings = [[NSArray alloc]initWithArray:[defaults objectForKey:@"userSettings"]]; _tempUserArray = [[NSArray alloc]initWithArray:userSettings]; 尝试将 NSArray 添加到用户默认值而不是 NSMutableArray。如果这也不起作用,您始终可以将数组转换为 NSData,然后将其保存为用户默认值。如果这样做,您将始终必须在使用数据之前对其进行编码/解码。您可以在 Apple 文档中找到这是如何完成的。【参考方案2】:我找到了解决问题的方法: 我像这样从 IBOutlet 输入数据
[self.tempUserSettings insertObject:self.firstName atIndex:1];
而不是这个:
[self.tempUserSettings insertObject:self.firstName.text atIndex:1];
所以数据是错误的,等等……
感谢你的帮助,从那些 .plist 和 NSUserDefault 中学到了很多
【讨论】:
以上是关于写入 NSUserDefault 和 .plist 失败的主要内容,如果未能解决你的问题,请参考以下文章