0

カスタム UITableViewCell ビューを作成しています。私にはメソッドがあり、プログラムUITableViewCellで作成しました:UILabel memberLabel

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  {

static NSString * const cellIdentifier = @"cellMemberId";

CPNMemberCell *cell = (CPNMemberCell *) [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

if (!cell) {

    [[NSBundle mainBundle] loadNibNamed:@"TeamCell" owner:self options:nil];
    cell = baseCell;
}

memberLabel = [[UILabel alloc] initWithFrame:CGRectMake(32, 19, 183, 27)];
[cell addSubview:memberLabel];

NSString * const test = @"test input";
memberLabel.text = test;

  return cell;
}

したがって、このコードは非常にうまく機能します。しかし、MutableDictionary でテスト文字列の値を JSON 応答を含む文字列に変更すると、すべて失敗します。その文字列が空でないことを確認するために、その文字列をコンソールログに特別に出力します。そして、その文字列を UILabel に割り当てる際に例外があります。

NSString * const test = [members valueForKey:@"modelId"];
NSLog(@"Output: %@", test);
memberLabel.text = test;

何が問題なのかわかりません。応答はコンソールに正しく出力さUILabelれ、最初のコード ブロックのようにテキスト文字列が正しく表示されますが、その応答で文字列を表示しようとするとSIGABRTmain.

4

1 に答える 1

2

test変数のデータ型を確認してください。使用する:

NSLog(@"data type = %@", [[test class] description]);

印刷data type = NSStringですか?そうでない場合は、それが問題です。

これも試してみてください

NSString* test = [ _members valueForKey:@"modelId"];
NSLog(@"Testing response in the console: %@", test);
if ([test isKindOfClass:[NSString class]]) {
  memberLabel.text = test;
} else {
  NSLog(@"test is not a string"); 
}
于 2012-11-13T00:51:33.243 に答える