当我单击我的集合视图中的项目时,我收到此错误

时间:2013-04-08 06:36:31

标签: ios nsarray plist nsdictionary

我有一个集合视图但是当我尝试点击图片时显示此错误?整个应用程序是一个tabbar应用程序,因此所有其他选项卡都在工作。除了最后一个标签图像。 我从plist拍摄图像,将其显示到collectionview中 这是错误

        *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI 
    objectAtIndex:]: index 0 beyond bounds for empty array'*** First throw call stack: (0x1e92012 


    0x1969e7e 0x1e47b44 0x58b91 0x56686 0x137cf 0x98f1c7 0x98f232 0x98f4da 0x9a68e5 0x9a69cb 0x9a6c76 


`0x9a6d71 0x9a789b 0x9a7e93 0x9a7a88 0xd03e63 0xcf5b99 0xcf5c14 0xdaf5d9 0xdc1182 0xdc1394 0x197d705

 0x9bb93c 0x9bb9ac 0x197d705 0x9bb93c 0x9bb9ac 0xb751d3 0x1e5aafe 0x1e5aa3d 0x1e387c2 0x1e37f44 

    0x1e37e1b 0x3c0f7e3 0x3c0f668 0x8adffc 0x287d 0x27a5)  libc++abi.dylib: terminate called throwing an exception

这是didselect方法,并准备将该数组传递给另一个viewcontroller

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if ([[segue identifier] isEqualToString:@"bookItem"]) {

    NSDictionary *currentBook = [[_freeBooks objectForKey:@"freebook"] objectAtIndex:[[[self.collectionView indexPathsForSelectedItems] objectAtIndex:0] row]];

    NSLog(@"%@", currentBook);

    GMMDetailpage *detailpage = (GMMDetailpage *)[segue destinationViewController];
    detailpage.bookDetails = currentBook;

    NSLog(@"%@",detailpage.bookDetails);
}

}

当前图书的价值是打印而且很好....但在此之后它执行一些其他系统代码,然后显示异常。检查图像enter image description here

1 个答案:

答案 0 :(得分:0)

您正在进行两次数组访问,因此错误来自两个数组中的一个为空的事实。

这两个数组是

[self.collectionView indexPathsForSelectedItems]

[_freeBooks objectForKey:@"freebook"]

独立检查两个数组并找出哪一个是空的。