[__NSArrayM objectAtIndex:]:索引2超出边界[0 .. 1]

Son*_*nic 0 nsarray ios nsrangeexception icarousel uicollectionview

我是一个新的iOS开发人员; 我有一个解析和动态单元格的应用程序,但当我运行应用程序时,我发现应用程序崩溃,因为标题上的原因我的代码如下

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{

    myArray = [[NSMutableArray alloc] init];


    //create new view if no view is available for recycling

   // view = [[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 250.0f, 300.0f)] autorelease];

    FXImageView *imageView = [[[FXImageView alloc] initWithFrame:CGRectMake(0, 0, 250.0f, 350.0f)] autorelease];
    imageView.contentMode = UIViewContentModeScaleAspectFit;
    imageView.asynchronous = YES;
   // imageView.reflectionScale = 0.5f;
   // imageView.reflectionAlpha = 0.25f;
  //  imageView.reflectionGap = 10.0f;
    imageView.shadowOffset = CGSizeMake(0.0f, 2.0f);
    imageView.shadowBlur = 5.0f;
    imageView.cornerRadius = 10.0f;
    view = imageView;

    [ProgressHUD dismiss];

     NSString *string1 = [[NSUserDefaults standardUserDefaults] stringForKey:@"Class"];

    PFQuery *query = [PFQuery queryWithClassName:[NSString stringWithFormat:@"%@",string1]];


    query.cachePolicy = kPFCachePolicyNetworkElseCache;

    //show loader view


    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        if (!error) {

            myArray = [[NSMutableArray alloc] initWithArray:objects];

            PFObject *object = [myArray objectAtIndex:index];


            [file getDataInBackgroundWithBlock:^(NSData *data1, NSError *error) {
                if (!error) {

                    ((UIImageView *)view).image = [UIImage imageWithData:data1];

                    //[HUD hideUIBlockingIndicator];

                }
            }];

        }

    }];

    return view;


}
Run Code Online (Sandbox Code Playgroud)

我使用第一个屏幕UICollectionView与动态数据解析为以下代码

pragma collectionView委托

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"cell";
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];

    CALayer *layer = cell.layer;
    [layer setCornerRadius:8.0f];
    [layer setMasksToBounds:YES];
   // [layer setBorderWidth:1.0f];
  //  layer.backgroundColor = [UIColor whiteColor].CGColor;
    //can you click

    PFObject *imageObject = [myArray objectAtIndex:indexPath.item];
    PFFile *imageFile = [imageObject objectForKey:@"image"];
    NSString *name = [imageObject objectForKey:@"name"];

    [imageFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
        if (!error) {

            UIImageView *imageView = (UIImageView *)[cell viewWithTag:100];
            imageView.image = [UIImage imageWithData:data];

            UILabel *title2 = (UILabel *)[cell viewWithTag:200];
            title2.text = [NSString stringWithFormat:@"%@",name];
            title2.font = [UIFont fontWithName:@"GESSTextMedium-Medium" size:12];
        }
    }];


    return cell;
}
Run Code Online (Sandbox Code Playgroud)

我需要一些帮助才能知道错误在哪里; 每次我在控制台上收到此错误[__NSArrayM objectAtIndex:]: index 2 beyond bounds [0 .. 1]

Sil*_*ril 6

没有足够的信息.我们甚至不知道这次崩溃的具体路线.实际的对象数是myArray多少?你还有什么collectionView:numberOfItemsInSection: 等等..

Imho,最简单的解决方案是调试此崩溃.并找出为什么指数大于objectAtIndex:预期.试试这个:

1)打开"断点导航器"

2)点击"+"按钮并选择"添加例外断点"选项

现在,app将在调试时对任何异常使用此断点.