【发布时间】:2015-05-23 23:15:37
【问题描述】:
我在插入数据时遇到问题。我正在检查条件,如果数据不存在然后插入,但应用程序在
上崩溃BOOL isExist = [context countForFetchRequest:request error:&error];
出现错误 Collection __NSCFSet 在枚举时发生了变异。
但同时有更多操作在后台线程上运行。它将对核心数据进行更多操作。
appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
NSManagedObjectContext *context = appDelegate.managedObjectContext;
NSError *error;
for (StreamData *stream in streamData) {
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:DB_TABLE_STREAM];
[request setPredicate:[NSPredicate predicateWithFormat:@"stream_id = %@", stream.messageId]];
[request setFetchLimit:1];
BOOL isExist = [context countForFetchRequest:request error:&error];
if (!isExist) {
CF_Stream *object = [NSEntityDescription insertNewObjectForEntityForName:DB_TABLE_STREAM inManagedObjectContext:context];
[object setStream_id:[NSNumber numberWithLongLong:[stream.messageId longLongValue]]];
[object setType:stream.streamType];
[object setTime_stamp:[[DateTimeManager sharedInstances] getStreamDate:stream.streamTime]];
}
}
if (![context save:&error]) {
NSLog(@"Failed to sve - error: %@", error);
return NO;
} else {
return YES;
}
非常感谢任何帮助。 谢谢!
【问题讨论】:
标签: ios objective-c multithreading core-data