2014-06-12 116 views
0

我試圖訪問搜索算法的啤酒數組中的每個名稱。我將數組設置爲字典,但它不像字典。這裏是數據的樣子:enter image description here訪問整個數組的數組對象字典

這樣你就可以看到我是如何訪問數組的,這裏是我如何填充我的uitableview。所以,基本上我知道如何訪問arrray中的單個對象,但我無法訪問整個數組。 :

cell.detailTextLabel.text=[self.beers[indexPath.row] name] 

然後我可能會完全離開基地。我仍然在這裏學習客觀的c和ios,所以如果我的缺乏經驗在我的帖子中顯示出來,我很抱歉。任何提示幫助。多謝你們!

+0

假設'Beer'是一個自定義類,名爲'name'的NSString屬性是否正確? – user3386109

+0

@ user3386109是的,這是正確的。 – Blake

回答

1

我假設你要包含每個Beer對象,而不是隻是名稱的新數組迭代訪問陣列中所有的名字對象本身。您可以像這個類別一樣使用數組「映射」功能。

typedef id(^MapBlock)(id input); 

@implementation NSArray (Additions) 
- (NSArray *)arrayByMappingWithBlock:(MapBlock)block { 
    NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:self.count]; 
    for (id obj in self) { 
     [array addObject:block(obj)]; 
    } 
    return array; 
} 
@end 

你會然後使用它是這樣的...

NSArray *beerNames = [self.beers arrayByMappingWithBlock:^id(Beer *beer) { 
    return beer.name; 
}]; 
0

您可以通過陣列循環

for (Beer *beer in self.beers) 
    NSLog(@"%@", beer.name); 
1

不能確定,如果這是你想要達到的目標,但是下面一行將產生一個包含所有啤酒名稱的數組:

[self.beers valueForKeyPath:@"name"]; 
+0

雖然沒有提供任何編譯時間檢查... – CrimsonChris

+0

它已經到了你們只是在爲我執行代碼的地步,但是對於記錄,當我使用該實現時,出現了此運行時錯誤:valueForUndefinedKey:]:this類不是密鑰名稱的密鑰值編碼。 – Blake

+0

然後,「name」不是Beer類的屬性,或者啤酒數組中有另一個不是Beer類的實例的對象。 –