3
    NSDictionary *topic = [spaces objectAtIndex:i];
    NSInteger topicid = [topic valueForKey:@"TOPICID"];

これを実行してトピックを印刷すると、次のようになります。

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 を見ると、値は常にメモリ アドレスです。私は何を間違っていますか?

4

3 に答える 3

7

おそらく値は実際には NSNumber です。以下を使用してこれを取得します。

NSInteger topicid = [[topic objectForKey:@"TOPICID"] intValue];
于 2009-10-15T14:24:33.400 に答える
0

ディクショナリには、プリミティブではなく、オブジェクトのみを含めることができます。(Xetius が提案したように) そこに保存されているものは、おそらくなんらかの形でラップされています。TOPICID は NSString のように見えます。

于 2009-10-15T15:17:40.657 に答える
0

配列出力では、topicID が文字列値 (NSString) であることがわかります。したがって、Xetius が説明するように設定する必要がありますが、NSString には「intValue」メソッドがあるため、NSNumber であるためではありません。

于 2009-10-15T15:17:58.610 に答える