BGFMDB
BGFMDB copied to clipboard
调用异步的储存更新方法(bg_saveOrUpdateAsync)的时候存在一个问题。
我这里的情景是我需要储存的model文件的字段比较多,
当我从服务器拉下来数据以后在数组遍历数据并储存。
for (NSInteger i = 0; i < database.count; i++) {
NSDictionary *dictionary = database[i];
DeviceBluetoothSetting *model = [DeviceBluetoothSetting mj_objectWithKeyValues:dictionary];
[model bg_saveOrUpdateAsync:nil];
}
但是在 BGTool.m 文件的 1026行 报了野指针错误,我猜测是因为我没有做数据的持有,遍历完就释放了model,但是当前 model 的数据比较多,model 被释放的时候还没有完成储存,所以取值的时候就报了野指针。
我这么猜测是因为我把储存方式改为 [model bg_saveOrUpdate]; 以后,这种情况就没有出现过了。
作者你看是否需要在注释里提示一下,需要一直持有要储存的对象,还是提供一个持有的解决方案?
的确是会存在这个问题,我后面再看一下如何做内部持有处理.
此问题已解决
异步批量数组插入还是有问题,同步则是正常的,有什么解决方案?
for(int i=0;i<1000;i++) { Human* human = [Human new]; human.sex = @"女"; human.body = @"小芳"; human.humanAge = 26; human.age = 15; human.num = 999; human.counts = 10001; human.food = @"大米"; human.data = UIImageJPEGRepresentation([UIImage imageNamed:@"MarkMan"], 1); human.array = @[@"数组1",@"数组2",@"数组3",@(1),@(1.5)]; human.dict = @{@"key1":@"value1",@"key2":@(2)}; [testA addObject:human]; }
/**
存储标识名为testA的数组.
*/
[testA bg_saveOrUpdateAsync:^(BOOL isSuccess) {
NSLog(@"-------------- test save success...");
}];