NSUserdefaults适用于模拟器,但不适用于设备

时间:2011-12-10 08:58:52

标签: xcode nsmutablearray nsarray nsuserdefaults

我想将NSArray保存到NSUSerDefaults。如果我在模拟器上执行它一切正常,如果我在Device上执行它,它就不起作用。

NSArray *Test1 = [Daten copy];
NSArray *Test2 = [Kosten copy];

[prefs setObject:Test1 forKey:@"Daten"];
[prefs setObject:Test2 forKey:@"Kosten"];

我正在使用上面的代码。

prefs是正常的NSUserDefaults,例如NSUserDefaults *prefs = [NSUserDefaults standartUserDefaults]; ...

Daten& Kosten是可变阵列,可以使用。

一切都在模拟器上运行,但在设备上它不起作用......

有人有想法吗?

3 个答案:

答案 0 :(得分:0)

您是在设置/更新后同步它们吗?

[[NSUserDefaults standardUserDefaults] synchronize];

答案 1 :(得分:0)

因为Saurabh要求我发布我的解决方案,我会为其他读者做。

我的问题代码如下:

[derText1 resignFirstResponder]
[derText2 resignFirstResponder]

NSArray *Test1 = [Daten copy];
NSArray *Test2 = [Kosten copy];

[prefs setObject:Test1 forKey:@"Daten"];
[prefs setObject:Test2 forKey:@"Kosten"];

这适用于带有XCode 3.2.5的iPhone 4模拟器,但不适用于安装了iOS 5.x的设备。

所以我已经从Apple下载并安装了最新的XCode版本。

之后它也无法与模拟器一起使用。看起来这个问题只适用于iOS 5软件。

我将代码改为:

NSArray *Test1 = [Daten copy];
NSArray *Test2 = [Kosten copy];

[prefs setObject:Test1 forKey:@"Daten"];
[prefs setObject:Test2 forKey:@"Kosten"];

[derText1 resignFirstResponder]
[derText2 resignFirstResponder]

它使用最新的iOS在设备和模拟器上工作。看看辞职的第一响应者Entrys的位置。他们似乎必须在拯救之后。我不知道为什么,但它确实有效。

答案 2 :(得分:0)

NSArray *Test1 = [Daten copy];<p>
NSArray *Test2 = [Kosten copy];<p>


NSUserDefaults *prefs;<p>
prefs= [[NSUserDefaults standardUserDefaults]setObject:Test1 forKey:@"Daten"];<p>

[[NSUserDefaults standardUserDefaults] synchronize];

prefs= [[NSUserDefaults standardUserDefaults]setObject:Test2 forKey:@"Kosten"];<p>

[[NSUserDefaults standardUserDefaults] synchronize];