阵列索引崩溃

时间:2017-09-20 07:54:06

标签: ios objective-c

我正在开发ios应用程序。将数据保存在Core Data中并从核心数据中获取数据。并且数据传递给数组并计算数组,但问题是应用程序将崩溃错误消息是[原因:' *** - [__ NSArrayM objectAtIndex:]:索引0超出空数组的范围']。请事先给我解决方案。

code..
    NSError *err = nil;
  _offlineResult = [context executeFetchRequest:fetchRequest error:&err];
 NSLog(@"%@",_offlineResult);
 for (int i =0 ; i<[_offlineResult count]; i++) {
 NSDictionary *dic = [_offlineResult objectAtIndex:i];
 NSString *offlineChildProductId = [dic valueForKey:@"childproductid"];
                    if ([_offlineProductID isEqual:offlineChildProductId]) {
                        _productName.text = [dic valueForKey:@"baseproductcode"];
                        _productDescription.text = [dic valueForKey:@"baseproductdesc"];

                        NSData *imgData = [NSData dataWithData:[dic valueForKey:@"productimageone"]];
                    _imageFirst.image = [UIImage imageWithData:imgData];
                }
            }

1 个答案:

答案 0 :(得分:0)

默认情况下,CoreData托管对象上下文不是线程安全的。崩溃的可能原因是,托管对象将从您的提取操作中删除(即使在后台线程中进行提取)。

您需要以保存对象的方式引入 concurrency

  1. 使用NSPrivateQueueConcurrencyType创建子托管对象上下文。
  2. 在此托管对象上下文的performBlock中执行保存操作。