Why does this not work:
NSInteger temp = 20;
[userSettingsFromFile setObject:temp forKey:@"aTemp"];
but this does:
[userSettingsFromFile setObject:@"someObject" forKey:@"aTemp"];
How can I use the NSInteger
variable?
NSInteger
isn't an object -- it's simply typecast to int
on 32-bit or long
on 64-bit. Since NSDictionary
can only store objects, you need to wrap the integer into an object before you can store it. Try this:
NSInteger temp = 20;
[userSettingsFromFile setObject:[NSNumber numberWithInteger:temp]
forKey:@"aTemp"];
In order to store numbers in collections, you have to wrap them up in an NSNumber
instance.
double aDouble = 20.3d;
NSInteger anInt = 20;
NSNumber *aWrappedDouble = [NSNumber numberWithDouble:aDouble];
NSNumber *aWrappedInt = [NSNumber numberWithInteger:anInt];
NSArray *anArray = [NSArray arrayWithObjects:aWrappedDouble, aWrappedInt, nil];
Whatever you pass through setObject has to be derived from NSObject
. NSInteger
is not, it's a simple int typedef. In your 2nd example you use NSString
, which is derived from NSObject
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With