将NSInteger变量传递给NSMutableDictionary或NSMutableArray

4th*_*ace 40 iphone objective-c

为什么这不起作用:

NSInteger temp = 20;
[userSettingsFromFile setObject:temp forKey:@"aTemp"];
Run Code Online (Sandbox Code Playgroud)

但这样做:

[userSettingsFromFile setObject:@"someObject" forKey:@"aTemp"];
Run Code Online (Sandbox Code Playgroud)

我该如何使用NSInteger变量?

Mat*_*all 93

NSInteger不是一个对象 - 它只是int在32位或long64位上进行类型转换.由于NSDictionary只能存储对象,因此需要先将整数包装到对象中,然后才能存储它.试试这个:

NSInteger temp = 20;
[userSettingsFromFile setObject:[NSNumber numberWithInteger:temp] 
                         forKey:@"aTemp"]; 
Run Code Online (Sandbox Code Playgroud)

  • 要从NSDictionay中取回它,你需要使用类似NSInteger temp = [[userSettingsFromFile objectForKey:@"aTemp"] integerValue]; (2认同)

dre*_*lax 6

为了在集合中存储数字,您必须将它们包装在一个NSNumber实例中.

double aDouble = 20.3d;
NSInteger anInt = 20;

NSNumber *aWrappedDouble = [NSNumber numberWithDouble:aDouble];
NSNumber *aWrappedInt = [NSNumber numberWithInteger:anInt];

NSArray *anArray = [NSArray arrayWithObjects:aWrappedDouble, aWrappedInt, nil];
Run Code Online (Sandbox Code Playgroud)