0

iOS開発とobjective-cの両方にとって非常に新しいものです。私は次の方法を持っています:

-(NSMutableArray *)fetchDatabaseJSON{
    NSURL *url = [NSURL URLWithString:@"http://www.ios.com/ios/responseScript.php"];
    NSError *error = nil;
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:NULL error:&error];
    //jsonArray = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
    //NSLog(@"Array: %@",[jsonArray objectAtIndex:0]);
    jsonDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
    NSLog(@"Dictionary:  %@", jsonDictionary);
    return jsonArray;
}

これで、NSLog に次のように表示されます。

2013-02-03 19:15:37.081 TestConnection[24510:c07] 辞書: (バナナ、アップル、サムチーズ)

私が理解していることから、辞書の中にあるものは何でもキー値を持っていません。どうすればいいの?どうすれば修正できますか?辞書の操作を容易にするためのキーが必要です。

よろしく、

4

1 に答える 1

1

JSONObjectWithData指定した JSON データに応じて、NSArray または NSDictionary を返す場合があります。JSON 文字列が配列の場合は、NSArray になります。JSON データが辞書の場合、NSDictionary を取得します。

JSON データ (data変数) を文字列に変換し、NSLog で出力します。NSData を NSString に変換するには、次のようなものを使用します。

NSString *myString = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding];

それを印刷してJSON配列が表示された場合、そこには辞書がありません。JSONを生成するサーバーコードを変更できる場合は、それを変更できる場合があります。

私が気付いたもう 1 つのことは、返されるコンテナーが変更可能であると想定していることです。私が間違っていなければ、それNSJSONReadingMutableContainersを取得するには JSONObjectWithData の options パラメータのようなオプションを使用する必要があります。

最後のヒントとして、NSArray (または NSDictionary) がある場合にコードをチェックインする場合は、次のようなものを使用します。

if ([obj isKindOfClass:[NSArray class]]) {...}
于 2013-02-03T16:47:52.673 に答える