【发布时间】:2019-04-06 15:52:26
【问题描述】:
在从 API 取回数据后,我想在后台更新我的 Realm 项目的一些属性。一些 API 调用需要被链接,也就是说,一个调用的结果馈送到另一个调用。 PromiseKit 看起来很有希望,但我无法保持在 Realm 的正确线程上。
let utiliQueue = DispatchQueue.global(qos: .utility)
utiliQueue.async {
autoreleasepool {
let realm = try! Realm()
let itemList = DataManager.getSorterFor("ItemList", in: realm).items
for item in itemList {
firstly {
YouTube.getChannelUploadsPlaylistAndBannerURL(item)
}.done(on: utiliQueue) { (playlistId: String, bannerURL: String) in
try! item.realm!.write {
item.playlistId = playlistId
item.bannerImageURL = bannerURL
}
}.catch { error in
print(error.localizedDescription)
}
}
}
}
当我到达写入事务时,我从 Realm 获得了IncorrectThreadException。我已经尝试告诉 PromiseKit 在正确的 DispatchQueue 上运行它,如上面的代码所示,但我仍然得到异常。我知道跨线程使用 Realm 对象的解决方法,但这应该可以在同一个线程上,对吧?
【问题讨论】:
标签: ios realm promisekit