Ios 将项目从NSSet添加到UITableView(将NSSet转换为多个阵列?)

Ios 将项目从NSSet添加到UITableView(将NSSet转换为多个阵列?),ios,objective-c,uitableview,nsarray,nsset,Ios,Objective C,Uitableview,Nsarray,Nsset,我有一个UITableView,它通过以下方式从核心数据中添加信息: 标题处添加了各种名称的“类别” 与类别对应的名称应加载到类别下的单元格中 现在,我已经让标题加载了正确的名称以及添加的节和行的正确数量。但是,核心数据的结果将作为NSSet返回,因此我无法基于indexath.row将每个名称添加到单元格中 有什么建议吗?供参考: cell.textLabel.text = [NSString stringWithFormat:@"%@",[[[dataToUse objectAtIndex:

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

  • 标题处添加了各种名称的“类别”
  • 与类别对应的名称应加载到类别下的单元格中
  • 现在,我已经让标题加载了正确的名称以及添加的节和行的正确数量。但是,核心数据的结果将作为NSSet返回,因此我无法基于indexath.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]];
    

    要从NSSet->NSArray转换,需要使用NSSortDescriptior对集合进行排序。比如:

    NSSortDescriptor *sort=[[NSSortDescriptor alloc] initWithKey:@"nm" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
    
      NSArray *arr = [[myset allObjects] sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]];
    

    使用
    NSFetchedResultsController


    它的设计正是为了满足你的需求。对于像您这样的直截了当的情况,您只需要根据模型关系将数据组织成多个部分,通过自动管理获取、编辑、缓存等,它将减轻您的负担。当然,您可以找到。

    NSSortDescriptor*sort=[[NSSortDescriptor alloc]initWithKey:@“name”升序:是选择器:@selector(localizedCaseInsensitiveCompare:)]

    NSArray*arr=[[myset allObjects]sortedarray使用描述符:[NSArray array with object:sort]]

    “nsset对象”*nssetObject=[arr objectAtIndex:indexath.row]


    cell.textLabel.text=[NSString stringWithFormat:@“%@”,nssetObject.name]

    是的,获取的结果是一个数组(因为我这样做了),但它是一个NSSET数组。这有意义吗?例如,我可以得到第一个NSSet的名称,但我需要关系(我称之为@“heldBy”)的每个indexath.row的名称,它本身也是一个集合,因为它是如何返回的。
    NSFetchedResultsController
    完全满足您的需要(根据您的CoreData模型图将行组织成节)。我的开发伙伴告诉我情况就是这样。我会坚持我的解决方案,这样我就可以继续前进,但这是我要尽快返回的首要任务。谢谢你,伙计!如果你把它作为一个答案,我会把它标记为接受。不客气。我已经添加了答案,我很高兴你发现它很有用。