2

各要素が と呼ばれるプロパティを持っている要素を含む Core Data データベースを考えてみましょう。問題は、各シンボルのsymbolを取得する最も簡潔な方法です。NSArrayこれは、次のようなもので達成できます

-(NSArray*)symbolsInDatabase {
  ENTRY_LOG;

  NSError* err;

  NSFetchRequest* request   = [NSFetchRequest fetchRequestWithEntityName:@"Element"];
  request.resultType        = NSDictionaryResultType;
  request.propertiesToFetch = [NSArray arrayWithObject:@"symbol"];

  NSArray* arrayOfDictionaries = [self.database.managedObjectContext executeFetchRequest:request error:&err];
  NSMutableArray* symbols = [[NSMutableArray alloc]initWithCapacity:[arrayOfDictionaries count]];

  for (NSDictionary* d in arrayOfDictionaries) {
    [symbols addObject:[d objectForKey:@"symbol"]];
  }

  EXIT_LOG;
  return symbols;

}

-(NSArray*)filteredArrayUsingPredicateそれでも、何かが欠けているというしつこい感覚があり、辞書の配列を繰り返し処理してキーのオブジェクトを抽出するのではなく、何らかの巧妙な方法で使用できるのではないかと感じていsymbolます。

これをよりきれいにする方法について何か考えはありますか?

4

1 に答える 1

1

実際、valueForKeyPath セレクター:

NSArray *symbols = [arrayOfDictionaries valueForKeyPath:@"@unionOfObjects.symbol"];
于 2012-07-09T08:19:45.700 に答える