我仍在尝试围绕如何使用GDC执行Realm查询。
我在我的一个班级中有这段代码:
class func placeNameForChatChannel(chatChannel: String, withCompletion handler: (String?)->()) {
dispatch_async(realmQueue) {
var channelEnvPredicate = NSPredicate(format: "channelName = %@", chatChannel)
var channelEnvs = PSTChannelEnvironment.objectsInRealm(realmdb, withPredicate: channelEnvPredicate)
if channelEnvs.count > 0 {
var channelEnvironment = channelEnvs[0] as! PSTChannelEnvironment
let placeName = channelEnvironment.placeName
handler(placeName)
} else {
handler(nil)
}
}
}
这两个在我的Application Delegate
var realmdb: RLMRealm {
return RLMRealm.defaultRealm()
}
var realmQueue = dispatch_queue_create("com.myapp.realmdb", DISPATCH_QUEUE_SERIAL)
当RLMException, reason: 'Realm accessed from incorrect thread
回调被调用时,我正在获得现在臭名昭着的handler
。
我做错了什么?
答案 0 :(得分:0)
您需要确保在每个RLMRealm
上重新创建dispatch
到GCD队列。如果您使用realmdb
而不是使用RLMRealm.defaultRealm()
,那么事情是否有效?