iOS 10中的核心数据并发性

时间:2017-01-09 05:38:47

标签: ios swift core-data

我的问题只是为了更好地处理持久容器的后台方法。例如,在下面的代码中,因为核心数据在后台执行获取请求,我最终需要使用GCD在完成处理程序中向UI显示图像,是否正确?

func fetch(completion: @escaping (_ groupOfPhotos: [Photo]) -> Void) {
    persistentContainer.performBackgroundTask { context in
        context.automaticallyMergesChangesFromParent = true
        let photo: [Photo] = try! context.fetch(Photo.fetchRequest())
        completion(photo)
    }
}

我也使用背景上下文来保存数据。

func save(_ binaryData: Data, with metadata: FIRStorageMetadata, _ reference: FIRStorageReference) {
    persistentContainer.performBackgroundTask { context in
        let photo = Photo(context: context)
        photo.image = binaryData as NSData?
        // etc
        try! context.save()
        self.context.performAndWait {
            do {
                try self.context.save()
            } catch {
                fatalError("Unable to save core data objects in main context: \(error)")
            }
        }
    }
}

我在这里采取最好的方法吗?

0 个答案:

没有答案