我正在尝试在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,对我可能做错的任何想法?
答案 0 :(得分:2)
检查每个步骤以查看值是否为nil
。像arrayWithContentsOfFile:
这样的例程不会产生错误。他们只返回nil
。因此,weaponChallengesList
为nil
,weaponC
为nil
,killsTotal
为0,您的replaceObjectAtIndex:withObject:
默默无效。
在ObjC中,如果“似乎没有”似乎发生,那么#1的原因就是你正在发送消息nil
。