【发布时间】:2017-04-27 17:23:40
【问题描述】:
下面的 sn-p 是我在我的 resultEvents 中获取所有数据的地方,我遇到了这个问题。
有时当下面的代码被执行时,我的 当前线程 不在MainThread 上,那么如何将我的当前线程更改为 MainThread?我在 tableView 的 cellforRow 方法上使用 resultEvents,这就是为什么我需要在 MainThread 上执行此操作。
这里需要DispatchQueue.main.async {}吗?
如果是这样,那么我无法使用它,因为我在访问 DispatchQueue.main.async 内的 resultEvents 时遇到此错误:
错误:变量“resultEvents”在被初始化之前被闭包捕获
我无法根据this 和this 使用一些虚拟或空数据对其进行初始化。
我的代码如下:
var resultEvents: Results<REvents>
print("realm012: ",realm , Thread.current)
/// MARK: Realm Fetching
if Thread.isMainThread {
resultEvents = realm.objects(REvents.self).sorted(byProperty: "created", ascending: false)
} else {
// Here how can i change my currentThread to Main, so that i can access this realmObject on TableView's CellForRow method.
let bgRealm = try! Realm()
resultEvents = bgRealm.objects(REvents.self).sorted(byProperty: "created", ascending: false)
}
【问题讨论】:
标签: ios swift realm grand-central-dispatch realm-mobile-platform