2012-03-05 54 views
0

我,一個名爲sections爲我UITableView的部分數據存儲在NSMutableArray工作。計數內的NSDictionary陣雖然陣列本身登錄

每個部分是包含以下項目的NSDictionaryStuff,另一個數組用於保存該部分的數據行,以及Header,該部分的標題標題的字符串。

我遇到的問題是試圖獲得Stuff陣列的計數。

NSLog(@"Returning the count of %@", [[[sections objectAtIndex:0] objectForKey:@"Stuff"] count]); 

我已經能夠確認[[sections objectAtIndex:0] objectForKey:@"Stuff"]實際上確實讓我陣列;如果我這樣做

NSLog(@"returning the contents of %@", [[sections objectAtIndex:0] objectForKey:@"Stuff"]); 

內容已記錄。

我也知道,通常[Stuff count]會愉快地返回數組的計數。

我在這裏丟失了什麼,或者它是不同的,因爲數組是在字典中?

回答

0

字典不知道它持有什麼樣的對象,所以你必須由指定給一個NSMutableArray或你的情況,鑄造對象告訴它從你的字典中的NSMutableArray *

NSLog(@"Returning the count of %@", [(NSArray *)[[sections objectAtIndex:0] objectForKey:@"Stuff"] count]); 
+0

謝謝您的快速回答。這使我糾正了。爲了將來的參考,我需要像任何時候需要訪問字典中數組的數組方法那樣進行類型轉換? – vichudson1 2012-03-05 19:51:24

0

返回-count方法返回一個整數,而不是一個對象,所以你需要使用正確的格式說明:

NSLog(@"Returning the count of %d", [[[sections objectAtIndex:0] objectForKey:@"Stuff"] count]); 

注意使用%d代替%@

4

您正在使用%@作爲格式說明符,但[NSArray count]返回NSUinteger

根據format specifier docs,您應該將其轉換爲無符號long並使用%lu。如果你只去iOS,%u沒有施放應該做得很好。

+0

感謝您的輸入。我在那裏輸入了%@。在我的代碼中,我實際上使用%i,並且在實現Kirby的類型轉換修復後似乎工作正常。 – vichudson1 2012-03-05 19:57:40

0
NSLog(@"Returning the count of %@", [[[sections objectAtIndex:0] objectForKey:@"Stuff"] count]); 

這應該work..except一個很大的錯誤.. %@爲對象(指針)..什麼你得到是一個整數(數組數)..change%@到%d和請再試一次