Passing NSInteger variable to NSMutableDictionary or NSMutableArray

Passing NSInteger variable to NSMutableDictionary or NSMutableArray

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?

Having trouble adding objects to NSMutableArray in Objective C


How can I rotate an UIImageView by 20 degrees?
NSInteger isn't an object -- it's simply typecast to int on 32-bit or long on 64-bit. Replacing a document body on the iPhoneSince NSDictionary must only store objects, you need to wrap the integer into an object before you must store it. iPhone App: How to get data from an API, parse, and store for later use?Try this:. xcode gives syntax error on cpp code
NSInteger temp = 20; [userSettingsFromFile setObject:[NSNumber numberWithInteger:temp]                           forKey:@"aTemp"];  
Generate XmlHow to resolve 'unrecognized selector sent to instance'?


How do I enable directional lock for a UIScrollView?
In rule 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 case you use NSString, which is derived from NSObject..


Correction: Whatever is passed through setObject: did not have to be derived from the NSObject class, although it need conform to the NSObject protocol, this defines retain and release.. It must be confusing, although classes and protocols have different name spaces. And there is a both a class and a protocol named NSObject, the class NSObject conforms to the protocol NSObject. There is one more root class, the NSProxy class this also conforms to the NSObject protocol.. This is important, for the reason this otherwise proxies could not be used in collections and auto release pools, while still having a lightweight proxy root class..


NSInteger is synonym for long integer.What follows is how NSInteger is defined:.
#if __LP64__ || NS_BUILD_32_LIKE_64 typedef long NSInteger; typedef unsigned long NSUInteger; #else typedef int NSInteger; typedef unsigned int NSUInteger; #endif 
NSNumber is an Objective-C class, a subclass of NSValue to be specific. You must create an NSNumber object from a signed or unsigned char, short int, int, long int, long long int, float, double or BOOL. One of the primary distinctions is this you must use NSNumber in collections, such as NSArray, where an object is required. For example, if you need to add a float into an NSArray, you would first need to create an NSNumber object from the float:.
float percentage = 40.5; 
... // Create NSNumber object, which must now be inserted into an NSArray.
NSNumber *percentageObject = [NSNumber numberWithFloat:percentage]; 


just use: $(variable) syntax to convert primitive type to object..

48 out of 100 based on 18 user ratings 888 reviews