2011-01-27 3 views

答えて

76

でそれを取得し、これを実行するための簡単な方法は、整数をラップし、NSNumberオブジェクトに浮いています。例:

NSMutableDictionary *testDictionary = [[NSMutableDictionary alloc] init]; 
[testDictionary setObject:[NSNumber numberWithFloat:1.23f] 
        forKey:[NSNumber numberWithInt:1]]; 
NSLog(@"Test dictionary: %@", testDictionary); 

[testDictionary release]; 

適切な値を抽出するには、NSNumberクラスから適切なintValue、floatValueなどのメソッドを使用します。

+0

ありがとうmiddaparka ... – Ratan

+2

キーはNSString *でなければならず、それはNSStringValueCoding.hのように見えるすべてのメソッドは文字列を要求します。 SDKで何か変更されましたか? –

2

オブジェクトである必要がありますので、代わりに[NSNumber numberWithInt:myInteger]を使用してください。 NSDictionarysはオブジェクトのみを扱うように設計されていたよう

その後、-integerValue

+1

integerValueメソッドは、intではなくNSIntegerオブジェクトを返します。 :-) –

+0

これは、-intValueである必要があります。ありがとうmiddaparka – sidyll

+3

@middaparka:NSIntegerはオブジェクトではありません。 – EmptyStack

8

NSMapTableは整数キーおよび/または値を直接サポートするため、NSMapTableを使用できます。 NSNumberを使ってbox/unboxする必要はありませんが、セットアップと使用がやや難しくなります。

+0

NSMapTableは、iOS 6以降でのみ使用できます。 –

+1

NSMapTableは弱い参照を保持しています。しかし、それはNSDictionaryとは異なります。 –

+0

「NSMapInsert」はiOSでは利用できません。 '[map setObject:(__ bridge id)((void *)myInt)forKey:myKey];'のようなもの以外の整数値を設定するより良い方法がありますか?私は、valueOptionsが 'NSPointerFunctionsIntegerPersonality | NSPointerFunctionsOpaqueMemory'である。 – qix

関連する問題