Ios 领域+;对象映射器+;SwityJSON

Ios 领域+;对象映射器+;SwityJSON,ios,swift,realm,swifty-json,Ios,Swift,Realm,Swifty Json,我需要帮助映射我的对象 领域模型: 我就是这样做的 // 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)

我需要帮助映射我的对象

领域模型:

我就是这样做的

    // 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 {

    }
//将请求结果写入领域数据库
let entries=json[“数据”]
realm.beginWrite()
让entry:ChatGroups=Mapper().map(JSONObject:entries)!
realm.add(条目,更新:true)
做{
请尝试realm.commitWrite()
}抓住{
}
JSON响应:

但我犯了个错误
致命错误:在展开可选值时意外发现nil


请帮我解决我做错了什么。

在您的
聊天组中
您已经声明的类中

dynamic var image: String = ""
但在您的响应中,JSON响应的图像键中的值为null

您需要将您的声明转换为:

dynamic var image: String? = nil

在您的
聊天组中
类中,您已声明

dynamic var image: String = ""
但在您的响应中,JSON响应的图像键中的值为null

您需要将您的声明转换为:

dynamic var image: String? = nil

创建一个类将数组转换为列表,因为领域不接受数组

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
    }
}
导入对象映射器
导入RealmSwift
公共类ListTransform:TransformType,其中T:Mappable{
公共类型别名对象=列表
公共类型别名JSON=[AnyObject]
设mapper=mapper()
公共init(){}
public func transformFromJSON(u值:Any?)->Object{
让结果=列表()
如果let value=value as?[AnyObject]{
对于值为json的{
如果让obj=mapper.map(JSONObject:json){
结果追加(obj)
}
}
}
返回结果
}
public func transformToJSON(uvalue:Object?->JSON{
var results=[AnyObject]()
如果let value=value{
对于obj的价值{
让json=mapper.toJSON(obj)
append(json作为AnyObject)
}
}
返回结果
}
}
然后在ChatGroups类中,您必须调用Transform函数进行转换,进行以下更改:

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

updated\u by创建一个类来将数组转换为列表,因为领域不接受数组

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
    }
}
导入对象映射器
导入RealmSwift
公共类ListTransform:TransformType,其中T:Mappable{
公共类型别名对象=列表
公共类型别名JSON=[AnyObject]
设mapper=mapper()
公共init(){}
public func transformFromJSON(u值:Any?)->Object{
让结果=列表()
如果let value=value as?[AnyObject]{
对于值为json的{
如果让obj=mapper.map(JSONObject:json){
结果追加(obj)
}
}
}
返回结果
}
public func transformToJSON(uvalue:Object?->JSON{
var results=[AnyObject]()
如果let value=value{
对于obj的价值{
让json=mapper.toJSON(obj)
append(json作为AnyObject)
}
}
返回结果
}
}
然后在ChatGroups类中,您必须调用Transform函数进行转换,进行以下更改:

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

通过如何获取json变量及其类型来更新_?@DávidPásztor其类型为json。我使用的是迅捷JSON。如果let value=response.result.value{let json=json(value)callback(true,json,nil)}@Nitesh,我在您的映射中看到了一些不同的东西,updated_by和member是数组,因此您必须使用var members=List()作为示例。尝试使用RealmOptional()而不是Bool。对于需要进行转换才能工作的列表,请参见:@Nitesh还有一件事,请尝试使用if-let语句。不要这样做,让entry:ChatGroups=Mapper().map(JSONObject:entries)!,如果let entry:ChatGroups=Mapper().map(JSONObject:entries){},请执行此操作。@JoséNeto谢谢,但仍然面临问题。如何获取json变量及其类型?@DávidPásztor其json类型。我使用的是迅捷JSON。如果let value=response.result.value{let json=json(value)callback(true,json,nil)}@Nitesh,我在您的映射中看到了一些不同的东西,updated_by和member是数组,因此您必须使用var members=List()作为示例。尝试使用RealmOptional()而不是Bool。对于需要进行转换才能工作的列表,请参见:@Nitesh还有一件事,请尝试使用if-let语句。不要这样做,让entry:ChatGroups=Mapper().map(JSONObject:entries)!,如果让entry:ChatGroups=Mapper().map(JSONObject:entries){},请执行此操作。@JoséNeto谢谢,但仍然面临这个问题。谢谢,这解决了我的问题。感谢你为解决这个问题所付出的努力。@Nitesh没问题,伙计!:)谢谢,这解决了我的问题。感谢你为解决这个问题所付出的努力。@Nitesh没问题,伙计!:)