plistからnsarrayを作成中にエラーが発生しましたか?
-
05-07-2019 - |
質問
.plistファイルからNSArrayを作成しようとしていますが、このエラーが引き続き発生します:
<!> quot; 'NSUnknownKeyException', reason: '[<NSCFString 0x5bbca60> valueForUndefinedKey:]: this class is not key value coding-compliant for the key Value1.'
<!> quot;
.plistファイルには、<!> quot; Item 1 <!> quot;というキーがあります。 <!> quot; Value1。<!> quotという文字列値。 次に、そのファイルから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];
}
}
解決
配列にはキーがありません(要素はインデックスによってアドレス指定されるため、配列は必要ありません)。キーと値のペアで構成されるのは辞書のみです。試してください:
for (id value in originalArray) {
NSLog(@"bundle: value=%@", value);
}
他のヒント
for
ループでは、辞書のようにoriginalArray
を使用しています。 plistのルートが辞書である場合は、NSDictionary
ではなくNSArray
を使用して読む必要があります。
NSArrayの代わりにすぐにNSMutableArrayを使用して、NSMutableArrayに変換し、pListが配列型であることを確認してください。コードは次のようになります。
-(void)recordValues:(id)sender {
// read "propertyList.plist" values
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"propertyList" ofType:@"plist"];
//create an NSMutableArray containing the
//user's score and the values from originalArray
NSMutableArray *array = [NSArray arrayWithContentsOfFile: path];
[newArray addObjectsFromArray:array];
//check-out the content
NSLog(@"The content of the array: %@", array);
//write xml representation of mutableArray back to propertyList
[array writeToFile:plistPath atomically:NO];
}
}
所属していません StackOverflow