考虑一个包含Elements的Core Data数据库,其中每个Element都有一个名为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
键的对象
关于如何制作这种清洁剂的任何想法?
答案 0 :(得分:1)
确实,valueForKeyPath选择器:
NSArray *symbols = [arrayOfDictionaries valueForKeyPath:@"@unionOfObjects.symbol"];