2013-02-21 3 views
1

Я хочу заполнить свои UITableView данными из моего NSMutableArray, но он получает исключение.Заполнение UITableView данными NSMutableArray

Исключение:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSDictionaryM isEqualToString:]: unrecognized selector sent to instance 0xa2ba880' 

Мой cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    } 

    cell.textLabel.text = [callDetailArray objectAtIndex:indexPath.row]; 

    [cell setAccessoryType: UITableViewCellAccessoryDisclosureIndicator]; 

    return cell; 
} 

Это массив:

Array: (
     { 
     callId = 3; 
     callKeyword = CALL100; 
     callName = "Call to All"; 
     callNumber = 5908; 
    } 
) 

То, что я хочу, чтобы это произошло, что клетки в моей UITaleView будет отображаться данные в callId, callKeyword, callName и callNumber.

+0

@Nitin Gohel ha указал вам в правильном направлении. Проблема в том, что вы пытаетесь поместить словарь в свойство, которое ожидает строковое значение. – croyneaus4u

ответ

3

В вас CellDetailArray данные В Dictionary так что вы можете получить ДЭТА от NSMutableArray как Беллоу: -

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    } 
    NSMutableDictionary *d=(NSMutableDictionary*)[callDetailArray objectAtIndex:indexPath.row]; 
    cell.textLabel.text =[d valueForKey:@"callName"]; 

    [cell setAccessoryType: UITableViewCellAccessoryDisclosureIndicator]; 

    return cell; 
} 

, если вы хотите, чтобы показать все четыре значения в ваш TableCell должны создать customeCell с четырьмя UIlable и Сейт Value как: -

YourLable1.text =[d valueForKey:@"callId"];

YourLable2.text =[d valueForKey:@"callKeyword"];

YourLable3.text =[d valueForKey:@"callName"];

YourLable4.text =[d valueForKey:@"callNumber"];

+0

Что касается этого: 'cell.textLabel.text = [d valueForKey: @" callName "];', мне действительно нужно сделать это вручную? – Jahm

+0

Теперь я вижу. Благодаря! – Jahm

+0

вы устанавливаете вручную, например 'cell.textLabel.text = [d valueForKey: @" callName "];' ваши данные в NSMutableDictionary pr NSDictionary. если ваш массив как myarray == (data1, data2, data3), то ваш первый метод работает нормально. –

2

использовать ниже код

cell.textLabel.text = [[callDetailArray objectAtIndex:indexPath.row]objectForKey:@"callName" ]; 

Вы пытаетесь словарь доступа вместо строки. callDetailArray кодирует данные словаря. внутри словаря доступны только строки, поэтому вам нужно будет получить к нему доступ с помощью objectForKey

+0

Он работает как прелесть при использовании этого кода. То, что я хочу сделать, это отображать 'callId',' callKeyword', 'callName' и' callNumber' в разных ячейках. – Jahm

+0

вы должны создавать ярлыки столько, сколько хотите. и вы можете использовать тот же код, но клавиши и метки должны быть разными – thavasidurai

+0

, если код работает, тогда вы можете принять ответ – thavasidurai

Смежные вопросы