2013-02-23 5 views
0

привет Я новичок в iPhone программирования, я использую EGOPhotViewer и хотите, чтобы показать изображения с помощью этого кода,как решить NSRangeException

for (recipeImages in recipeImages.imgArray) { 

    photo = [[MyPhoto alloc] initWithImageURL:[NSURL URLWithString:recipeImages.recipie_img_url]name:recipeImages.recipe_name]; 
    NSLog(@"%@",recipeImages.recipie_img_url); 

    MyPhotoSource *source = [[MyPhotoSource alloc] initWithPhotos:[NSArray arrayWithObjects:photo ,nil]]; 
     photoController = [[EGOPhotoViewController alloc] initWithPhotoSource:source]; 


} 


     [APPDELEGATE.navigationController pushViewController:photoController animated:YES]; 

и я получаю эту ошибку

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 2147483648 beyond bounds [0 .. 0]' 
*** First throw call stack: 
(0x225f012 0x2084e7e 0x2214b44 0x9e1e4 0xa46c4 0x1b45dc9 0x22b90c5 0x2213efa 0x1a7a482 0x1a8d73b 0xa9d7c 0xa6a4e 0xa5081 0xa0499 0x10af753 0x10afa7b 0x10bd590 0x10c55bd 0x10c5eab 0x10c64a3 0x10c6098 0x5bad6 0x2098705 0xfcf920 0xfcf8b8 0x1090671 0x1090bcf 0x108fd38 0xfff33f 0xfff552 0xfdd3aa 0xfcecf8 0x2c15df9 0x2c15ad0 0x21d4bf5 0x21d4962 0x2205bb6 0x2204f44 0x2204e1b 0x2c147e3 0x2c14668 0xfcc65c 0x263a 0x2545) 
libc++abi.dylib: terminate called throwing an exception 
+0

Отладить код и указать, где это исключение выбрасывается! –

+0

он бросает, когда я заканчиваю цикл – NullData

+1

вы можете сказать, что мне теперь делать ??? – NullData

ответ

2

Я решил это, написав этот код

NSMutableArray *localImagesArray = [[NSMutableArray alloc] init]; 

for (recipeImages in recipeImages.imgArray) { 
     photo = [[MyPhoto alloc] initWithImageURL:[NSURL URLWithString:recipeImages.recipie_img_url]name:recipeImages.recipe_name]; 
    NSLog(@"%@",recipeImages.recipie_img_url); 
    NSLog(@"%@", [photo debugDescription]); 
    [localImagesArray addObject:photo]; 
} 


    MyPhotoSource *source = [[MyPhotoSource alloc] initWithPhotos:localImagesArray]; 
     photoController = [[EGOPhotoViewController alloc] initWithPhotoSource:source]; 



     [APPDELEGATE.navigationController pushViewController:photoController animated:YES]; 




} 
+0

Я тоже должен был это увидеть. Рад, что вы нашли ошибку. – Ric

1

Убедитесь initWithImageURL: name: внутри MyPhoto возвращение self. Проверьте это с NSLog(@"%@", [photo debugDescription]);

+0

при отладке это дает ?. (нуль) (нуль) NullData

+0

- это бросание из-за нулевых изображений ????? – NullData

+0

Так что это не сбой в этом цикле? – Ric

2

[__NSArrayI objectAtIndex]: индекс 2147483648 за пределами [0 .. 0]»

2147483648 является NSNotFound. Где-то в вашем коде или в коде библиотеки, которую вы используете, что-то вроде indexOfObject: используется в одном массиве, и этот индекс используется для получения значения из другого массива, и он не работает.

Ваша петля выглядит очень подозрительно. Вы назначаете значение photoController в конце каждой итерации, то есть только значение, которое вы назначаете последним, действительно будет использовано. Я не знаком с библиотекой, которую вы используете, но вы, вероятно, хотите создать массив объектов MyPhoto, прежде чем передавать их на один photoController.