为什么NSUserDefaults没有正确同步?

时间:2013-09-30 09:14:04

标签: iphone ios nsuserdefaults

NSArray *arrFuelType = [[NSArray alloc] initWithObjects:@"Petrol", @"Diesel", @"LPG", @"CNG", nil];

NSUserDefaults *fuelTypeDefaults = [NSUserDefaults standardUserDefaults];

[fuelTypeDefaults setObject:arrFuelType forKey:@"fueltype"];

[[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"fueltype"];

[fuelTypeDefaults synchronize];

我正在执行此操作以保存nsuserdefaults,但每次存储“1”。 我不明白为什么这个存储价值这样!!! 那我该怎么办?

5 个答案:

答案 0 :(得分:1)

您不能使用相同的密钥。你所做的就是删除上一个变量(所以你的数组)。

答案 1 :(得分:1)

你使用不同的键,如:

NSUserDefaults *fuelTypeDefaults = [NSUserDefaults standardUserDefaults];

[fuelTypeDefaults setObject:arrFuelType forKey:@"fueltype_array"];

[[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"fueltype_bool"];

检索此值:

 NSMutableArray *arr= [[NSUserDefaults standardUserDefaults]arrayForKey:@"fueltype_array"];
    bool *bol=[[NSUserDefaults standardUserDefaults ]boolForKey:@"fueltype_bool"];

答案 2 :(得分:0)

您无法为同一个密钥保存两个对象。因为您必须为每个对象单独KEY。 如果名称中的密钥不存在,您可以检查Key退出是否objectForKey:将返回nil。

正如您所描述的结果显示1,因为最后您将此声明

[[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"fueltype"];

因此,重新TRUE值意味着1,因为0表示false1表示true

答案 3 :(得分:0)

这是因为您为同一个密钥存储了不同的值。您需要使用不同的密钥名称。

答案 4 :(得分:0)

您需要使用不同的密钥

NSArray *arrFuelType = [[NSArray alloc] initWithObjects:@"Petrol", @"Diesel", @"LPG", @"CNG", nil];

NSUserDefaults *fuelTypeDefaults = [NSUserDefaults standardUserDefaults];

[fuelTypeDefaults setObject:arrFuelType forKey:@"fueltype"];

[[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"boolKey"];

[fuelTypeDefaults synchronize];