2012-06-24 119 views
0

可能有一個直接的答案,但我找不到一個。如何確定NSArray中每個NSDictionary對象中的對象數

我有一個NSArray,充滿了NSDictionary對象。每個NSDictionary對象中對象的數量/ 2決定了UITableviewcell的每個部分中的行數。同樣,NSDictionary對象的數量決定了節的數量 - (這簡直就是[NSArray count])。

一個基本的例子:

self.myArray = [NSArray arrayWithObects: 
[NSDictionary dictionaryWithObjectsAndKeys:obj1, key1, obj2, key2,..., nil], 
... 
[NSDictionary dictionaryWithObjectsAndKeys:objA, keyA ... objn, keyn, nil], 
nil]; 

我已經做手動計數在每一個的NSDictionary對象的數量,除以2的每個號碼,並使用該信息,其中每個元素包含以構成陣列每節的行數。手動構造的數組然後在tableview的numberOfRowsInSection委託中使用。這看起來很粗糙。順便說一句,但並不重要,我除以2的原因是,每個tableview單元格都由2個UIlabel子視圖組成 - 對於每個NSDictionary對象集合,其中1個標籤用於obj ...,另一個用於鍵...。

非常感謝提前。

回答

1

使用上NSArrayNSDictionarycount功能:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return [myArray count]; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    NSDictionary *dictionary = [myArray objectAtIndex:section]; 
    return [dictionary count]/2; 
} 
+0

僅供參考,不考慮對對象的在給定的詞典數量,代碼總是返回2/2或1 – fundtimer

1
@implementation NSArray (totalObjects) 

- (NSUInteger) totalObjects 
{ 
NSUInteger result = 0; 
for (id object in self) 
result += [object isKindOfClass:[NSDictionary class]] ? [[object allKeys] count] : 1; 
return result; 
} 

@end 
+0

感謝NSResonder但是,將您的解決方案作爲myArray的一個屬性應用,可以爲我提供數組中所有密鑰對的計數,而不是按索引進行索引。無論如何,爲了記錄,我找到了一個簡單的解決方案:NSInteger i = [[myArray objectAtIndex:index] count]; – fundtimer

相關問題