2009-10-15 70 views
3
NSDictionary *topic = [spaces objectAtIndex:i]; 
    NSInteger topicid = [topic valueForKey:@"TOPICID"]; 

當我運行這一點,並打印出的話題,我得到以下:valueForKey只返回內存地址,而不是實際價值

Printing description of topic: 
<CFDictionary 0xdb2a70 [0x30307a00]>{type = mutable, count = 2, capacity = 12, pairs = (
    10 : <CFString 0xdb5300 [0x30307a00]>{contents = "TOPICID"} = 29 
    12 : <CFString 0xdb53a0 [0x30307a00]>{contents = "TOPICNAME"} = <CFString 0xdb5360 [0x30307a00]>{contents = "zzzzzzzz"} 
)} 

然而,當我在看topicid,該值始終是一個內存地址。我究竟做錯了什麼?

+0

你可以發表你如何在空間中設置對象的代碼? – pxl 2009-10-15 16:34:31

回答

7

也許值實際上是一個NSNumber。你會得到這個使用:

NSInteger topicid = [[topic objectForKey:@"TOPICID"] intValue]; 
0

字典只能包含對象,而不是基元。無論存儲在那裏(如Xetius建議)可能以某種形式包裝。看起來TOPICID是一個NSString。

+0

沒有說明輸出表明該鍵是一個字符串,該值只是29(沒有類型定義)? – pxl 2009-10-15 16:33:04

+0

描述是'漂亮';沒有辦法在字典中存儲原始整數 – 2009-10-15 23:55:52

0

在數組輸出中,您可以看到topicID是一個字符串值(NSString)。所以,你會想把它設置爲Xetius描述 - 但不是因爲它是一個NSNumber,因爲NSString有一個「intValue」方法。

相關問題