ios - 将 NSSet 中的项目添加到 UITableView(将 NSSet 转换为多个数组?)

标签 ios objective-c uitableview nsarray nsset

我有一个 UITableView,它通过以下方式添加核心数据中的信息:

  1. 标题中添加了各种名称的“类别”
  2. 与类别相对应的名称应加载到类别下方的单元格中

现在,我的标题加载了正确的名称以及添加的正确数量的节和行。但是 - Core Data 的结果作为 NSSet 返回,因此我无法根据 indexPath.row 将每个名称添加到单元格中。

有什么建议吗?供引用:

cell.textLabel.text = [NSString stringWithFormat:@"%@",[[[dataToUse objectAtIndex:indexPath.section]valueForKey:@"heldBy"]valueForKey:@"name"]];

将适当的名称集返回到相应部分的每个单元格,但它会返回每个单元格的整个名称集。我只想根据每个名称所属的行来添加每个名称。我可以通过将 NSSet 转换为数组来解决这个问题,但由于创建了多个集合(因为有多个类别),我不知道如何做到这一点。

编辑:我通过执行以下操作解决了问题,但我仍然有兴趣知道最好的做法是什么。

NSSet *daset = [[dataToUse objectAtIndex:indexPath.section]valueForKey:@"heldBy"];
NSMutableArray *addToLabel = [[NSMutableArray alloc]init];
int i = 0;
for(NSSet *contact in daset) {
    [addToLabel insertObject:[contact valueForKey:@"name"] atIndex:i];
    NSLog(@"%@",addToLabel);
    i++;
}
cell.textLabel.text = [NSString stringWithFormat:@"%@",[addToLabel objectAtIndex:indexPath.row]];

最佳答案

使用NSFetchedResultsController

它的设计正是为了满足您的需求。对于像您这样简单的情况,您只需要根据模型关系将数据组织成多个部分,它将通过自动管理获取、编辑、缓存等来减轻您肩上的大量负担。您可以找到 a nice tutorial here当然还有official documentation here .

关于ios - 将 NSSet 中的项目添加到 UITableView(将 NSSet 转换为多个数组?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17140121/

相关文章:

ios - 在 iOS9 swift 中选择特定行更新核心数据数据库

ios - 如何以编程方式从iOS设备上删除应用程序?

ios - `animateKeyframesWithDuration` - 高 GPU

swift - FetchedResultsController 值不会覆盖自定义 NSManagedObject 初始值

ios - UItableviewcell dequeueReusableCellWithIdentifier removeFromSuperview

ios - UITableView - 使用 reloadRowsAtIndexPath

objective-c - 从 NSMutableArray 中提取 NSDictionary

ios - 类设计和委托(delegate)

ios - imagePickerController 委托(delegate)未调用,Swift

objective-c - cocoa 释放静态变量