以类型为realm :: IncorrectThreadException的未捕获异常终止:从不正确的线程访问的Realm

时间:2017-02-04 08:22:33

标签: ios iphone realm

我正在使用Realm来保持持久性。现在我真的很困惑,我是否应该使用领域。

我正在使用almofire,ObjectMapper和Realm以下是我的代码。

的UserInfo

class UserInfo:Object,Mapper
{
 dynamic var name:String?
dynamic var accountTye:String?
dynamic var loginResult: String?
}

我从登录服务器获得成功回复后。

====== UserSessionManager

  var userInfo:UserInfo?

 UserSessionManager.shared().saveSession()
  func saveSession()
  {
  RealmHelper.shared().save(userInfo!)
  }

RealmHelper

   func save<T:Object>(_ realmObject:T) {
   let backgroundQueue = DispatchQueue(label: ".realm", qos:        .background)
   backgroundQueue.async {
   let realm = try! Realm()
    debugPrint("Realm Creation (Thread.current)") I am getting same    thread
    if realm.isInWriteTransaction{
    return
   }
  try! realm.write {
  debugPrint("Realm add (Thread.current)") I am getting same thread
  realm.add(realmObject)
  }
  }

  }

当我尝试访问UserSessionManager.shared()。userInfo对象时,我遇到了这个崩溃。

我不明白为什么会这样。

1 个答案:

答案 0 :(得分:0)

我通过从Realm访问UserInfo对象来修复此问题。 问题是我正在将Realm对象(UserInfo)添加到Realm中。

我正在尝试访问直接存储在另一个单例类中的同一个对象,这导致了我的问题。

现在我从领域中恢复后访问同一个对象,现在没有问题,

但是,一旦我们将Realm对象添加到Realm,我就不会这样访问它。