【发布时间】:2009-07-30 19:07:08
【问题描述】:
我正在尝试从 .plist 文件创建 NSArray,但我不断收到此错误:
“'NSUnknownKeyException', reason: '[<NSCFString 0x5bbca60> valueForUndefinedKey:]: this class is not key value coding-compliant for the key Value1.'”
在 .plist 文件中,我有一个名为“Item 1”的键和一个名为“Value1”的字符串值。 然后在代码中,我从该文件创建了一个 NSArray:
-(void)recordValues:(id)sender {
// read "propertyList.plist" values
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"propertyList" ofType:@"plist"];
originalArray = [[NSArray alloc] initWithContentsOfFile:plistPath];
// dump the contents of the array to the log
for (id key in originalArray) {
NSLog(@"bundle: key=%@, value=%@", key, [originalArray valueForKey:key]);
}
//create an NSMutableArray containing the
//user's score and the values from originalArray
NSMutableArray *newArray = [NSMutableArray arrayWithObjects:[NSNumber numberWithFloat:userScore], nil];
[newArray addObjectsFromArray:array];
//write xml representation of mutableArray back to propertyList
[newArray writeToFile:plistPath atomically:NO];
}
}
【问题讨论】:
-
说实话,我只是不知道你想做什么。请用更精确的语言?
-
当然!我有一个属性列表,它是一个数组。这些基本上就像游戏中的高分。当有人玩游戏时,我会将他们的分数添加到一个全新的 NSMutableArray 中。然后我将这个新的可变数组与我的属性列表中的高分结合起来,并将整个集合写回原始 plist 文件。但我得到一个错误,我不知道为什么。这有意义吗?
-
我忘记了我在其中留下了一个旧变量,如果您不知道该应用程序的功能,这没有任何意义。 :) 对不起。修好了。
-
仅供参考,如果您这样做,您可以简化代码并使用单个变量:
NSMutableArray *array = [NSMutableArray arrayWithContentsOfFile:plistPath];就目前而言,您正在泄漏originalArray。
标签: iphone objective-c cocoa-touch nsarray