views:

26

answers:

2

I using something like this : [tmpArray insertObject:something[i] atIndex:i];

But I got a MSG : passing argument 1 of "insertObject:atIndex:" makes pointer from integer without a cast.

What should I do to fix it?

+1  A: 

I guess your something[] array is a C array of int, if this is the case you cannot pass its value at that position into an NSArray since it contains objects (and objects in obj-C are referenced by pointers).

What you could do is wrap the int into a NSNumber this way: [tmpArray insertObject:[NSNumber numberWithInt:something[i]] atIndex:i];

rano
+1  A: 

You can't magically make random pointer into an object, you need to understand what the type of the pointer is and do something semantically reasonable with that type. Also, that is not what the error you are seeing is about. The error is because the type expected is a pointer (and an object in ObjC is also a pointer type), and the type info of the thing you are passing is a scalar.

Taking a wild guess, something is probably an array of ints, if so what you want to do is wrap is the integer in an NSNumber in order to store it in a collection:

//assuming this:
int something[100];

//then your line should be this:
[tmpArray insertObject:[NSNumber numberWithInt:something[i]] atIndex:i];

Obviously you will need to unbox the value anywhere you access it. If it is not an array of integers then you will need to do something else (though probably similiar), but without more info I can't tell you exactly what.

Louis Gerbarg