使用 NSMutableArray 中的数据填充 UITableView
Posted
技术标签:
【中文标题】使用 NSMutableArray 中的数据填充 UITableView【英文标题】:Populating UITableView with data from NSMutableArray 【发布时间】:2013-02-21 05:08:57 【问题描述】:我想用来自我的NSMutableArray
的数据填充我的UITableView
,但它出现了异常。
例外:
*** 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
中的数据。
【问题讨论】:
@Nitin Gohel ha 为您指明了正确的方向。问题是您试图将字典放入期望字符串值的属性中。 【参考方案1】:在你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 中显示所有四个值,则必须创建具有四个 UIlable 和 Sate 值的 customeCell,例如:-
YourLable1.text =[d valueForKey:@"callId"];
YourLable2.text =[d valueForKey:@"callKeyword"];
YourLable3.text =[d valueForKey:@"callName"];
YourLable4.text =[d valueForKey:@"callNumber"];
【讨论】:
关于这个:cell.textLabel.text =[d valueForKey:@"callName"];
,我真的需要手动吗?
您像cell.textLabel.text =[d valueForKey:@"callName"];
一样手动设置,因为您的数据进入 NSMutableDictionary 和 NSDictionary。如果你的数组像 myarray==(data1,data2,data3) 那么你的第一个方法工作正常。
你应该在字典上调用objectForKey:
,而不是valueForKey:
。或者使用现代语法:cell.textLabel.text = callDetailArray[indexPath.row][@"callName"];
.【参考方案2】:
你使用下面的代码
cell.textLabel.text = [[callDetailArray objectAtIndex:indexPath.row]objectForKey:@"callName" ];
您正在尝试访问字典而不是字符串。 callDetailArray 包含字典数据。在字典中只有字符串可用,因此您必须使用 objectForKey 访问它
【讨论】:
使用此代码时,它就像一个魅力。我想做的是,在不同的单元格中显示callId
、callKeyword
、callName
和callNumber
。
您必须尽可能多地创建标签。您可以使用相同的代码,但键和标签应该不同以上是关于使用 NSMutableArray 中的数据填充 UITableView的主要内容,如果未能解决你的问题,请参考以下文章
在 iPhone 中从 NSMutableArray 填充数据
使用 CoreData 数据库填充 NSMutableArray