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.
精彩评论