-1
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”。我不明白为什么这个存储值是这样的!!!所以我该怎么做 ??

4

5 回答 5

1

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

于 2013-09-30T09:16:36.680 回答
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"];
于 2013-09-30T09:20:37.517 回答
0

您不能为同一个键保存两个对象。因为您必须KEY为每个对象单独保存。如果带有名称的键不存在,您可以检查KeyExits for not if 是否会返回 nil。objectForKey:

正如您所描述的那样,您的结果显示1是因为您最后发表了此声明

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

因此,它将TRUE值手段重新1作为 0手段false1手段true

于 2013-09-30T09:19:07.290 回答
0

这是因为您为同一个键存储不同的值。您需要使用不同的键名。

于 2013-09-30T09:19:44.017 回答
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];
于 2013-09-30T09:20:25.093 回答