views:

621

answers:

1

I need to store some integer values as the contents of an array. But when i try to do so, it throws a warning, passing argument 1 of 'addObject' makes pointer from integer without a cast. And obviously the value is not stored in the array. Here's thecode.

NSUInteger i;
for (i=0;i<5;i++){
 [array addObject:i];}
+3  A: 

NSArray-s cannot store non-id objects. You have to box it into an NSNumber:

NSUInteger i;
for (i=0;i<5;i++) {
   [array addObject:[NSNumber numberWithUnsignedInteger:i]];
}

or use a CFArray with custom callbacks (but you sacrifice readability for performance), or use std::vector<NSUInteger> (but you need to use Objective-C++).

KennyTM
thanks for this one, but how to retrive it back?
Nithin
@Nithin: You can get an `NSUInteger` from an `NSNumber` with `-unsignedIntegerValue`.
KennyTM
pls give an example for that.
Nithin
NSUInteger anInt = [[array objectAtIndex:0] unsignedIntegerValue];
Kendall Helmstetter Gelner