3

サーバーからのJSON応答に従う必要があります。

   {
  "theSet": [

  ],
  "Identifikation": 1,
  "Name": "Casper",
  "Adress": "Lovis 23",
  "Location": "At home",
  "Information": "The first, the second and the third",
  "Thumbnail": "none",
 }

私は次のようにデータを取得しています:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

    NSLog(@"connectionDidFinishLoading");

    NSLog(@"Succeeded! Received %d bytes of data",[data length]);

    NSError *myError = nil;

     NSDictionary *res = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&myError];

      news = [NSArray arrayWithObjects:[res allKeys], [res allValues], nil];

      NSLog(@"%@", news);

    //[mainTableView reloadData];
}

次に、すべてのJSONデータを配列に挿入して、テーブルビューにデータを表示できるようにします。

私のテーブルビューコード:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MainCell"];

    if(cell == nil){
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MainCell"];
    }

    cell.textLabel.text = [[news objectAtIndex:indexPath.row] objectForKey:@"Name"];
    cell.detailTextLabel.text = [[news objectAtIndex:indexPath.row] objectForKey:@"Adress"];

    return cell;
}

しかし、私のアプリはエラーでクラッシュします:

-[__NSArrayI objectForKey:]: unrecognized selector sent to instance. 

JSONオブジェクトをNSArrayに挿入して、テーブルビューに表示できるようにするにはどうすればよいですか?

4

3 に答える 3

2

編集:

あなたのコードをもう一度見直しましたが、以前の回答は間違っていました。

あなたのを生成するときnews、あなたはそれに2つNSArrayのオブジェクトを入れています。1 つ目はすべてのキーを含み、2 つ目は JSON のすべての値を含みます。

JSON で各オブジェクトの名前を表示するには、次のようにするだけです。

news = [res allKeys];
jsonResult = res;

// 値を使用する場合は、json を保存してください!

それらは順不同であることに注意してください。セルでは、次のことができます。

NSString *key = [news objectAtIndex:indexPath.row];
cell.textLabel.text = key;

id object = [jsonResult valueForKey:key];
cell.detailTextLabel.text = // do something depending on your json type which can have different values
于 2012-12-20T12:31:37.937 に答える
0

私は自分のプロジェクトにより適した簡単な解決策を自分で見つけました:

私はちょうど次のことをしました:

    NSDictionary *res = [NSJSONSerialization JSONObjectWithData:data options:0 error:&myError];

NSArray news = [NSArray arrayWithObject:res];

これで、次のコードを使用してテーブルビューに JSON コンテンツを表示できます。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MainCell"];

    if(cell == nil){
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MainCell"];
    }


    cell.textLabel.text = [[news objectAtIndex:indexPath.row] valueForKey:@"name"];

    cell.detailTextLabel.text = [[news objectAtIndex:indexPath.row] objectForKey:@"Location"];

    return cell;
}
于 2012-12-20T15:02:44.470 に答える
0

あなたが持っているエラー

[__NSArrayI objectForKey:]: unrecognized selector sent to instance.

あなたが知る必要があるすべてを教えてくれます。

これはNSArray、わからないと言っていますobjectForKey。Apple が提供するドキュメントを読むと、これが表示されます。

あなたのコード

cell.textLabel.text = [[news objectAtIndex:indexPath.row] objectForKey:@"Name"];

newsNSArray が応答するオブジェクトを返すことを期待していますobjectForKey- おそらくNSDictionary. JSON データを抽出するためのコード

NSDictionary *res = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&myError];
news = [NSArray arrayWithObjects:[res allKeys], [res allValues], nil];

すべての辞書を取得し、キーを配列に抽出するだけです。

コードのこれらの行を確認する必要があります - これが間違っているところです。

NSJSONSerialization リファレンスと、それがリンクしている関連サンプル コードを見てください。

于 2012-12-20T12:32:20.157 に答える