我正在使用AFNetworking来解析一些数据,然后保存到CoreData,我想要做这样的事情。将NSManagedObject(在主要上下文中创建)从后台线程传递到主线程是否安全?
let parserContext: NSManagedObjectContext = MTCoreDataManager.sharedManager().newPrivateManagedObjectContext()
let mainContext: NSManagedObjectContext = MTCoreDataManager.sharedManager().managedObjectContext()
override func responseObjectForResponse(response: NSURLResponse!, data: NSData!, error: NSErrorPointer) -> AnyObject? {
var model: NSManagedObject?
parserContext.performBlockAndWait {
....parsing data...
....create model and assign value...
....save model...
let objID = model.objectID
mainContext.performBlockAndWait {
model = mainContext.objectWithID(objID)
}
}
return model
}
let op = AF.GET(path, parameters: nil, success: { (operation: AFHTTPRequestOperation, response: AnyObject) -> Void in
// main thread
println(response)
}) { (operation: AFHTTPRequestOperation, error: NSError) -> Void in
println(error.description)
}
由于responseObjectForResponse在后台线程运行,我想用一个背景上下文来解析数据,并在这方面创造NSManagedObject,然后回到主线程对象作为最终的回调将是主线程,我不想返回NSManagedObjectID,我想返回NSManagedObject,但我不知道这是否安全。