いくつかの異なる検証ツールなどによって検証されたJSON結果を生成するRESTサービスがあります。iOS開発にはかなり慣れていませんが、一般的な開発ではありません。サービスからの応答からオブジェクト/応答/何かを抽出する際に問題が発生します。私の最善の努力にもかかわらず、私は私の試みに失敗しました。
サービスからの典型的な応答:
[
{
"prcID": 547,
"prcName": "walls",
"prcDescription": "hi-lo",
"1prc": 270,
"2prc": 282,
"3prc": 312,
"4prc": 348,
"5prc": 354,
"6prc": 360,
"7prc": 366,
"8prc": 372,
"9prc": 384,
"10prc": 432
},
{
"prcID": 548,
"prcName": "doors",
"prcDescription": "hi-lo",
"1prc": 270,
"2prc": 282,
"3prc": 312,
"4prc": 348,
"5prc": 354,
"6prc": 360,
"7prc": 366,
"8prc": 372,
"9prc": 384,
"10prc": 432
}
]
このコードは、サンプルコードと、自分で物事を機能させるための試みを組み合わせたものです。
- (void)fetchedData:(NSData *)responseData {
//parse out the json data
NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData //1
options:kNilOptions
error:&error];
NSMutableArray *myarray = [json.description mutableCopy];
outPutText.text = [myarray mutableCopy];
}
- (void)viewDidLoad
{
[super viewDidLoad];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSData* data = [NSData dataWithContentsOfURL:
[NSURL URLWithString:@"someserviceurl"]];
[self performSelectorOnMainThread:@selector(fetchedData:)
withObject:data waitUntilDone:YES];
});
}
このコードでは、少なくともTextViewでサービスからの応答を確認できますが、ObjectAtIndexを使用して「json」NSDictionaryにドリルインしようとするか、AllKeysを使用して反復しようとするたびに、以下のコードを試したときと同様のエラーが発生します。 :
NSArray* somearray = [json objectForKey:@"prcName"];
NSLog(@"PriceName: %@", somearray);
エラーは次のとおりです。
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0x71944b0'
どんな助けでも大歓迎です。