2
考慮包含元素的核心數據數據庫,其中每個元素都有一個名爲symbol
的屬性,問題是獲取每個符號的NSArray
的最簡潔的方法。這可以通過沿獲取核心數據屬性的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
鍵。
有關如何使這個更清潔的任何想法?
爲 'NSArray的' 不可見@interface聲明選擇 'allValues' - 這是對的NSDictionary選擇。 – Joe 2012-07-10 00:49:17
對不起,我更正了答案,測試了它。 – Mundi 2012-07-10 07:34:55
編輯以反映正確的選擇器是valueForKeyPath,另請參閱http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/KeyValueCoding/Articles/CollectionOperators.html以獲取集合運算符的說明。 Upvote編輯批准。 – Joe 2012-07-11 01:47:54