增加plist值

时间:2011-06-17 17:43:10

标签: objective-c cocos2d-iphone plist

我正在尝试在objective-c中使用plist增加一个值(使用cocos2d)。

我正在使用此加载数据:

documentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString* filePath2 = [documentsDir stringByAppendingPathComponent:@"weaponchallenges.plist"];
    weaponChallengesList = [[NSMutableArray arrayWithContentsOfFile:filePath2] retain];

我相信这是有效的,因为它不是错误的,虽然我不确定测试它的最佳方法。

plist里面有各种Dictionary项,每个项中有各种键+整数。

例如,plist中的第一项具有项值键'kills',其int值为0.

我正在使用:

NSDictionary * weaponC = [weaponChallengesList objectAtIndex:0];
        int killsTotal = [[weaponC valueForKey:@"kills"] intValue];
        [weaponC setValue:[NSNumber numberWithInt:(killsTotal + 1)] forKey:@"kills"];
        [weaponChallengesList replaceObjectAtIndex:0 withObject:weaponC];

但是killsTotal似乎总是0,对我可能做错的任何想法?

1 个答案:

答案 0 :(得分:2)

检查每个步骤以查看值是否为nil。像arrayWithContentsOfFile:这样的例程不会产生错误。他们只返回nil。因此,weaponChallengesListnilweaponCnilkillsTotal为0,您的replaceObjectAtIndex:withObject:默默无效。

在ObjC中,如果“似乎没有”似乎发生,那么#1的原因就是你正在发送消息nil