web-dev-qa-db-ja.com

[__NSCFNumberの長さ]:認識されないセレクターがインスタンスUITableViewに送信されました

エラーが発生しています

[__NSCFNumber length]:認識されないセレクターがインスタンス0x15580c90 2014-02-18 15:10:49.490 CIB [1706:60b]に送信されました*キャッチされない例外 'NSInvalidArgumentException'によるアプリの終了、理由: '-[__ NSCFNumber length] :認識されていないセレクタは、インスタンス0x15580c90' *まずスローコールスタックに送信された:(0x2da18e83 0x37d756c7 0x2da1c7b7 0x2da1b0af 0x2d969dc8 0x2e33b695 0x2e33b169 0x301ab2fd 0x1603ad 0x302cf315 0x302776cd 0x30276ef1 0x3019d353 0x2fe23943 0x2fe1f167 0x2fe1eff9 0x2fe1ea0d 0x2fe1e81f 0x2fe1854d 0x2d9e3f69 0x2d9e18f7 0x2d9e1c43 0x2d94c471 0x2d94c253 0x326862eb 0x30201845 0x113de1 0x3826eab7)のlibc ++ abi.dylib:NSException型のキャッチされていない例外で終了

ここにループがあります。 Jsonの配列からモデルのタスクリストへ、そしてNSMutableArray _tasklistに保存されます

NSArray *taskJson = [json objectForKey:@"fOTaskListModelWss"];

    for (NSDictionary *dictCQ in taskJson) {
        NSLog(@"TASKLIST: %@", [dictCQ objectForKey:@"foTaskListModelWs"]);

        NSDictionary *datadic = [dictCQ objectForKey:@"foTaskListModelWs"];
        TaskList *task = [[TaskList alloc]init];
        [task setTaskCount:datadic[@"count"]];
        [task setFuncCd:datadic[@"funcCd"]];
        [task setFuncCdDscp:datadic[@"funcCdDscp"]];
        [task setRequestStatus:datadic[@"requestStatus"]];
        [task setRole:datadic[@"role"]];
        [_taskList addObject:task];
    }

次に、ここにcellForRowAtRowPathIndexのコードがあります

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString * simpleTableIdentifier = @"MenuTableViewCell";
MenuTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MenuTableViewCell" owner:self options:nil];
    cell = [nib objectAtIndex:0];
}
TaskList *txn = [_taskList objectAtIndex:indexPath.row];
cell.titleLabel.text = txn.funcCdDscp;
cell.totalCountLabel.text = txn.taskCount;
return cell;}
31
lhencq
cell.titleLabel.text = txn.funcCdDscp;
cell.totalCountLabel.text = txn.taskCount;

これらの1つ(どちらかはわかりませんが、私の推測ではtaskCountになります)はNSNumberです。テキストはNSStringを取ります。

85
Steven Fisher
cell.titleLabel.text = txn.funcCdDscp;
cell.totalCountLabel.text = [txn.taskCount stringValue];

OR

これはbest solution

cell.totalCountLabel.text = [NSString stringWithFormat:@"%@",txn.taskCount];
18
codercat

WebサービスからJSONデータを操作している場合、以下があなたの助けになることを願っています

cell.textLabel.text=[NSString stringWithFormat:@"%@",[[JsonDictionaryObject objectForKey:@"Respected_Key_Name"]objectAtIndex:indexPath.row]];
5
muthukumaresh

ここでは、NSStringの代わりにNSNumberが期待されているため、クラッシュします。したがって、それをNSStringに変換すると解決されます。

3
Priyanka