SpriteKit .plist问题xcode 6

时间:2014-10-29 04:36:56

标签: ios objective-c iphone

我正在开发一款需要使用plist的游戏。我正确地设置了plist,或者至少我希望,因为我一直在使用这种方法来设置plist。但问题是,在这种情况下,就像plist甚至不被识别。这是我的plist的内容: my plist contents

'yo'键和值是我用来查看plist是否被识别的调试值。这是我的代码:

-(NSString *)docsDir{
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)    objectAtIndex:0];
}

-(void)UpdatePlist{

listPath = [[self docsDir] stringByAppendingPathComponent:@"details.plist"];
self.savedData = [NSMutableDictionary dictionaryWithContentsOfFile:listPath];

unsigned long storedHighScore = [[self.savedData valueForKey:@"High Score"] unsignedLongValue];

NSLog(@"%@",[[self.savedData valueForKey:@"yo"] stringValue]);
NSLog(@"Here");

if (score>storedHighScore) {
    [self.savedData setValue:[NSNumber numberWithUnsignedLong:score] forKey:@"High Score"];
    NSLog(@"YO %lu",[[self.savedData valueForKey:@"High Score"] unsignedLongValue]);
}

[self.savedData writeToFile:listPath atomically:YES];
}

问题源于我假设的代码或我对plist的声明。正如预期的那样,所有NSLog都会执行,但我的日志文件更有趣: log file

即使是测试字符串也不会被返回并被视为null。在这一点上,我假设plist有问题,是的,我可以向你保证plist的名字确实是details.plist。

1 个答案:

答案 0 :(得分:1)

这个plist在哪里?何时/如何最初写入文件目录?

文档目录是从iTunes复制文件的目录。因此,如果您将此文件放入应用程序的资源中,它将不会以文档结尾。

当plist不存在时,-dictionaryWithContentsOfFile:将返回nil。在-objectForKey:上呼叫-stringValuenil会再次返回nil。因此,如果该文件不存在,self.savedData将设置为nil。在-writeToFile:atomically:上拨打nil也是无操作。所以你发布的代码永远不会创建plist,如果它还没有。

您是否尝试在调试器中单步执行此代码?点击-dictionaryWithContentsOfFile:行左侧的装订线,查看self.savedData设置的内容?