开发者

valueForKey only returns memory address and not actually value

    NSDictionary *t开发者_JAVA百科opic = [spaces objectAtIndex:i];
    NSInteger topicid = [topic valueForKey:@"TOPICID"];

when I run this and print out topic I get the following:

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"}
)}

However, when I look at topicid, the value is always a memory address. What am I doing wrong?


Maybe the value is actually an NSNumber. You would get this using:

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


Dictionaries can only contain objects, not primitives. Whatever is stored in there (as Xetius suggested) is probably wrapped in some form. It would appear that TOPICID is an NSString.


In the array output, you can see topicID is a string value (NSString). So, you would want to set it as Xetius describes - but not because it is an NSNumber, because NSString has an "intValue" method.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜