Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 不存储信息的词典_Iphone_Objective C_Cocoa Touch - Fatal编程技术网

Iphone 不存储信息的词典

Iphone 不存储信息的词典,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,出于某种奇怪的原因,golferStats没有正确存储信息 我在这段代码中删掉了一堆东西,只保留了最基本的内容,为什么它仍然不工作 问题:最后一个NSLOG在应该返回一个巨大数组时返回nil NSMutableDictionary *golferStats = [[NSMutableDictionary alloc] init]; golferStats = [userDefaults objectForKey:@"golferStats"]; [golferStats setObject:g

出于某种奇怪的原因,golferStats没有正确存储信息

我在这段代码中删掉了一堆东西,只保留了最基本的内容,为什么它仍然不工作

问题:最后一个NSLOG在应该返回一个巨大数组时返回nil

NSMutableDictionary *golferStats = [[NSMutableDictionary alloc] init];
golferStats = [userDefaults objectForKey:@"golferStats"];

[golferStats setObject:golferTwoIconCounter forKey:golferName]; //golferName is k

[userDefaults setObject:golferStats forKey:@"golferStats"];
[userDefaults synchronize];
NSLog(@"SAVED SCORE CARD");
NSLog(@"%@",[golferStats objectForKey:@"k"]);

NSMutableDictionary*golferStats=[[NSMutableDictionary alloc]init]

golferStats=[userDefaults objectForKey:@“golferStats”]

[golferStats发布]

您首先创建一个
NSDictionary
,然后在其上赋值,从而泄漏内存,并可能从用户默认值中恢复
nil
setObject:forKey:
nil
字典中是一个no-op,然后将其设置回用户默认值

编辑:

首先尝试检查是否有字典:

NSDictionary *golferStats = [userDefaults objectForKey:@"golferStats"];
if (golferStats == nil) {
    golferStates = [NSDictionary dictionary]; // this will not leak
}
...

NSMutableDictionary*golferStats=[[NSMutableDictionary alloc]init]

golferStats=[userDefaults objectForKey:@“golferStats”]

[golferStats发布]

您首先创建一个
NSDictionary
,然后在其上赋值,从而泄漏内存,并可能从用户默认值中恢复
nil
setObject:forKey:
nil
字典中是一个no-op,然后将其设置回用户默认值

编辑:

首先尝试检查是否有字典:

NSDictionary *golferStats = [userDefaults objectForKey:@"golferStats"];
if (golferStats == nil) {
    golferStates = [NSDictionary dictionary]; // this will not leak
}
...

如果要在词典已存在的情况下保留词典的现有内容,请执行以下操作:

NSMutableDictionary *golferStats = [userDefaults objectForKey:@"golferStats"];
if (!golferStats) golferStats = [[[NSMutableDictionary alloc] init] autorelease];

[golferStats setObject:golferTwoIconCounter forKey:golferName];
[userDefaults setObject:golferStats forKey:@"golferStats"];
[userDefaults synchronize];

// no [golferStats release] because of autorelease above

如果要在词典已存在的情况下保留词典的现有内容,请执行以下操作:

NSMutableDictionary *golferStats = [userDefaults objectForKey:@"golferStats"];
if (!golferStats) golferStats = [[[NSMutableDictionary alloc] init] autorelease];

[golferStats setObject:golferTwoIconCounter forKey:golferName];
[userDefaults setObject:golferStats forKey:@"golferStats"];
[userDefaults synchronize];

// no [golferStats release] because of autorelease above

NSMutableDictionary*golferStats=[[NSMutableDictionary alloc]init];golferStats=[userDefaults objectForKey:@“golferStats”]
NSMutableDictionary*golferStats=[[NSMutableDictionary alloc]init];golferStats=[userDefaults objectForKey:@“golferStats”]如果OP不想保留任何其他现有词典条目(如果它们确实存在),则这是正确的。如果OP不想保留任何其他现有词典条目(如果它们确实存在),则这是正确的。