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没问题,伙计!:)