views:

87

answers:

4

Hey everyone;
I am stuck in a stupid mess...
I want to get not only the value of an array but also the index of the values.
In PHP it's simple: foreach($array as $key->$value) Here $key will contain the index value.
Isn't there a similar approach in objective c?
How else could I achieve this? Please help! :((

A: 

I'm unable to test it, but I think I did do something similar the other night. From this wiki it looks like you can do something like

for(id key in d) {
    NSObject *obj = [d objectForKey:key];      // We use the (unique) key to access the (possibly non-unique) object.
    NSLog(@"%@", obj);
}
Aaron Hathaway
+2  A: 

If you're on iOS4 you can do

[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop)
                                   {
                                       NSLog(@"%@ is at index %u", obj, idx);
                                   }];

on iOS 3.x you can do

NSUInteger idx = 0;
for (id obj in array)
{
    NSLog(@"%@ is at index %u", obj, idx);
    idx++
}
Joshua Weinberg
Just curious, is `-objectForKey:` any better/worse than incrementing the variable `idx`?
Robert
`objectForKey:` would only work for dictionaries. The discussion here was about arrays.
Joshua Weinberg
+3  A: 

Arrays not like in php are numbered 0-size of array. I guess you talking about dictionary's. If so you can get array of key with [dict allKeys]. so something like this should work:

for(id key in [dict allKeys]){
  id value = [dict objectForKey:key];
}
GameBit
Thanks :).. you're right...i was messed up with dictionary and arrays (because associative arrays in php are so much like dictionary in objective-c!). Now using dictionary, i can make use of key and its value!
Bangdel
A: 
for (i=0;i<array.count;i++)
{
  NSLog(@"Index=%d , Value=%@",i,[array objectAtIndex:i]);
}

Use this its simpler...

hAPPY cODING...

Suriya