0

次の方法で Core Data から情報を追加する UITableView があります。

  1. ヘッダーに各種名称の「カテゴリー」を追加
  2. カテゴリに対応する名前は、カテゴリの下のセルにロードする必要があります

現在、ヘッダーに正しい名前と正しい数のセクションと行が追加されています。ただし、Core Data からの結果は NSSet として返されるため、indexPath.row に基づいて各名前をセルに追加することはできません。

助言がありますか?参考のため:

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

適切なセクションの各セルに適切な名前のセットを返しますが、各セルには ENTIRE セットを返します。どの行に含まれているかに基づいて、各名前を追加したいだけです。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]];
4

3 に答える 3

1

を使用するNSFetchedResultsController

それはあなたが探しているものを正確に行うように設計されています. モデルの関係に基づいてデータをセクションに整理する必要があるだけの、あなたのような簡単なケースでは、フェッチ、編集、キャッシュなどを自動的に管理することで、肩から多くの重荷を取り除くことができます。ここで素晴らしいチュートリアルを見つけることができます。もちろん、公式ドキュメントはこちらです。

于 2013-06-18T07:24:59.050 に答える
0

NSSortDescriptor *sort=[[NSSortDescriptor alloc] initWithKey:@"name" 昇順:YES selector:@selector(localizedCaseInsensitiveCompare:)];

NSArray *arr = [[myset allObjects] sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]];

"nsset オブジェクト" *nssetObject =[arr objectAtIndex:indexPath.row];

cell.textLabel.text = [NSString stringWithFormat:@"%@",nssetObject.name];

于 2014-05-06T09:57:19.700 に答える
0

NSSet->NSArray から変換するには、NSSortDescriptior でセットをソートする必要があります。何かのようなもの:

NSSortDescriptor *sort=[[NSSortDescriptor alloc] initWithKey:@"nm" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];

  NSArray *arr = [[myset allObjects] sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]];
于 2013-06-17T04:16:46.207 に答える