JSONデータをTableViewに取り込むアプリに取り組んでいます。しかし、JSON 操作のコードが開始された瞬間、アプリは SIGABRT エラーでクラッシュします。以下は、私が使用しているコードです (もちろん、セキュリティ上の理由から実際の URL は差し引いています)。
// START - CONNECT TO JSON FILE ON SERVER AND DOWNLOAD INFORMATION
- (void)fetchTags
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSData* data = [NSData dataWithContentsOfURL:
[NSURL URLWithString: @"URL goes here..."]];
NSError* error;
//tags = how many objects there are in the JSON file containing data
tags = [NSJSONSerialization JSONObjectWithData:data
options:kNilOptions
error:&error];
NSDictionary *tagz = [NSJSONSerialization JSONObjectWithData:データ オプション:kNilOptions エラー:&エラー];
tags = [tagz objectForKey:@"name"];
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
});
}
// END - CONNECT TO JSON FILE ON SERVER AND DOWNLOAD INFORMATION
//START - NUMBER OF ROWS TO GENERATE
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return tags.count;
}
//END - NUMBER OF ROWS TO GENERATE
// START - PULL IN INFORMATION FROM JSON AND DISPLAY IN CELLS
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"TagCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSDictionary *tag = [tags objectAtIndex:indexPath.row];
NSString *name = [tag objectForKey:@"name"];
if ([tag objectForKey:@"name"] != NULL)
cell.textLabel.text = name;
return cell;
}
// END - PULL IN INFORMATION FROM JSON AND DISPLAY IN CELLS
URL が指す JSON データは次のとおりです。 "\u5909\u66f4\u5c65\u6b74\u30c6\u30b9\u30c8"}, {"projid": 2011101401, "名前": "20111014-01"}, {"projid": 201111001, "名前": "\u5c3e \u7530\u90b8\u30ea\u30d5\u30a9\u30fc\u30e0" }]、"オプション 1": ""}
クラッシュ時に返される完全なエラーは次のとおりです。 2141:707] *キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。理由: '-[__NSCFDictionary objectAtIndex:]: 認識されないセレクターがインスタンス 0x16f750 に送信されました'
誰かが私が間違っていることを見つけたり、役立つチュートリアルを参照したりできますか?
前もって感謝します!
編集: (void)fetchTags に配置された次のコードはクラッシュを修正しましたが、データがセルに取り込まれていないため、まだ問題があります:
NSDictionary *tagz = [NSJSONSerialization JSONObjectWithData:data
options:kNilOptions
error:&error];
tags = [tagz objectForKey:@"name"];