2017-05-25 3 views
1

Je rencontre des problèmes avec Realm. Fondamentalement, je récupère des objets d'une API en arrière-plan en utilisant Alamofire, les mappant à un Object avec ObjectMapper, en enregistrant avec Realm en arrière-plan, et en revenant au thread principal pour les montrer. Je sais que les objets de royaume sont thread confinés si elles sont gérées, mais je suis confus sur la façon de les utiliser après avoir été sauvés:Swift Realm Enregistrement d'objets préchargés dans un nouvel objet

1) Fetch données, la carte, et enregistrez-le:

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) 
      } 

     } 
    } 

À ce stade, je peux utiliser l'objet dans le fil principal. Le problème est quand je dois enregistrer un autre objet que j'ai récupéré après celui-ci, et BESOIN de l'objet précédemment enregistré en tant que propriété (relation). Je reçois l'erreur "Impossible d'ajouter des objets d'un domaine différent".

Est-ce une bonne approche pour utiliser un objet précédemment enregistré comme propriété d'un autre?

Répondre