2017-05-25 5 views
1

Realmでいくつかの問題が発生しています。基本的には、Alamofireを使用してバックグラウンドでAPIからオブジェクトをフェッチし、ObjectMapperを使用してObjectにマップし、Realmをバックグラウンドで保存してメインスレッドに戻って表示します。私は、彼らが管理されている場合はレルムオブジェクトがスレッド閉じ込められている知っているが、それでも私は、彼らが保存された後にそれらを使用する方法について困惑している:Swift Realmプリフェッチされたオブジェクトを新しいオブジェクトに保存します。

1)データを取得し、それをマップし、それを保存します。

network.makeCallWith(urlRequest: objCreation, objectType: objType.self) { (response) in...... 

//..... 
DispatchQueue.global(qos: .background).async { 

     do { 

      let realm = try Realm() 

      try realm.write { 

       for obj in objects { //obj in response 

        realm.add(obj,update: true) 
       } 

      } 
     } catch let error as NSError { 

      print(error) 
     } 

     DispatchQueue.main.async { 

      do { 

       let realm = try Realm() 

       let objects = realm.objects(T) 

       completion(Result.success(Array(objects))) 

      } catch let error as NSError { 

       print(error) 
      } 

     } 
    } 

この時点では、メインスレッドでオブジェクトを使用できます。問題は、この後に取り出した別のオブジェクトを保存しなければならないときで、以前に保存されたオブジェクトがプロパティ(リレーションシップ)として必要な場合です。 「別のレルムからオブジェクトを追加できません」というエラーが表示されます。

これは、以前に保存したオブジェクトを別のオブジェクトのプロパティとして使用するのに適していますか?

答えて

関連する問題