IndexOfObject return 2147483647

Adriana Carelli picture Adriana Carelli · Jun 7, 2012 · Viewed 11.3k times · Source

I have an array with 10 items. When I call "IndexOfObject" for the elements number 9 and the element number 10 Xcode return an exception: "NSRangeException"

reason: '_[_NSCFArray objectAtIndex:] index:2147483647 beyond bounds(10)'.

From a previous NSLog, I saw that the two elements exist in the array but indexOfObject not find them. Why?

My code is:

    NSDictionary * headConfig =[avatarDictionaryToSave objectForKey:@"head_dictionary"];
    NSString * headImage =[headConfig objectForKey:@"layer_key"];
    NSString * pathFace =[[NSBundle mainBundle]pathForResource:@"Face" ofType:@"plist"];
    NSLog(@"%@", headImage);

    NSArray *arrayFace =[NSArray arrayWithContentsOfFile:pathFace];
    NSLog(@"the  elements are: %@", arrayFace);//here headImage is present
    int index =[arrayFace indexOfObject:headImage];
    NSLog(@"the index is %d", index);

Answer

Nikolai Ruhe picture Nikolai Ruhe · Jun 7, 2012

indexOfObject: returns NSNotFound when the object is not present in the array. NSNotFound is defined as NSIntegerMax (== 2147483647 on iOS 32 bit).

So it seems that the object you are looking for is just not there.