2017-05-15 3 views
0

Ich brauche Hilfe bei der Abbildung mein ObjektRealm + Object Mapper + SwityJSON

Realm Modell: https://gist.github.com/n1tesh/7d6c6e155285dd6b39c8edba76f6eba5

Dies ist, wie ich

// write request result to realm database 
    let entries = json["data"] 
    realm.beginWrite() 
     let entry: ChatGroups = Mapper<ChatGroups>().map(JSONObject: entries)! 
     realm.add(entry, update: true) 

    do { 
     try realm.commitWrite() 
    } catch { 

    } 

JSON Antwort tun: https://gist.github.com/n1tesh/bf84cbd930f8c76b340f21723a217ebe

Aber ich bekomme Fehler fatal error: unexpectedly found nil while unwrapping an Optional value

Bitte helfen Sie mir mit dem, was ich falsch mache.

+0

Wie bekommt man die json variabel und was ist sein Typ? –

+0

@ DávidPásztor Seine vom Typ JSON. Ich benutze SwiftyJSON. wenn Wert = response.result.value { lassen Sie Json = JSON (Wert) Rückruf (True, Json, Nil) } – Nitesh

+0

@ Nitesh Ich sah etwas anderes in Ihrem Mapping, updated_by und Mitglied sind Arrays, also müssen Sie Verwenden Sie var members = Liste () zum Beispiel. Versuchen Sie, RealmOptional () anstelle von Bool zu verwenden. Für die Liste müssen Sie eine Transformation zu tun, um zu arbeiten, sehen Sie dies: https://gist.github.com/Jerrot/fe233a94c5427a4ec29b –

Antwort

3

Erstellen Sie eine Klasse Array umwandeln zur Liste, weil das Reich nicht Arrays akzeptieren.

import ObjectMapper 
import RealmSwift 

public class ListTransform<T:RealmSwift.Object> : TransformType where T:Mappable { 
    public typealias Object = List<T> 
    public typealias JSON = [AnyObject] 

    let mapper = Mapper<T>() 

    public init(){} 

    public func transformFromJSON(_ value: Any?) -> Object? { 
     let results = List<T>() 
     if let value = value as? [AnyObject] { 
      for json in value { 
       if let obj = mapper.map(JSONObject: json) { 
        results.append(obj) 
       } 
      } 
     } 
     return results 
    } 

    public func transformToJSON(_ value: Object?) -> JSON? { 
     var results = [AnyObject]() 
     if let value = value { 
      for obj in value { 
       let json = mapper.toJSON(obj) 
       results.append(json as AnyObject) 
      } 
     } 
     return results 
    } 
} 

Dann in Ihrem ChatGroups Klasse müssen Sie die Funktion Transformation rufen Sie die Transformation zu machen, diese Änderung vorzunehmen:

updated_by    <- map["updated_by"] 
members     <- map["member"] 

dazu:

updated_by    <- (map["updated_by"], ListTransform<QuorgUser>()) 
members     <- (map["member"], ListTransform<GroupMember>()) 
+0

Danke, das hat mein Problem gelöst. Schätzen Sie Ihre Bemühungen, um dieses Problem zu lösen. – Nitesh

+0

@Nitesh kein Problem Kumpel! :) –

0

In Ihrer ChatGroup Klasse, die Sie haben

erklärt
dynamic var image: String = "" 

aber Sie bekommen null in Bild Schlüsseln von JSON-Antwort in Ihrer Antwort.

Sie benötigen eine Erklärung zu konvertieren:

dynamic var image: String? = nil 
Verwandte Themen