领域 + 对象映射器 + SwityJSON
Realm + Object Mapper + SwityJSON
我需要帮助来映射我的对象
领域模型:https://gist.github.com/n1tesh/7d6c6e155285dd6b39c8edba76f6eba5
我就是这样做的
// 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 响应:https://gist.github.com/n1tesh/bf84cbd930f8c76b340f21723a217ebe
但是我遇到了错误
fatal error: unexpectedly found nil while unwrapping an Optional value
请帮我解决我做错的地方。
在您的 ChatGroup
class 中您已声明
dynamic var image: String = ""
但在您的回复中,您在 JSON 回复的图像键中得到的是空值。
您需要将声明转换为:
dynamic var image: String? = nil
创建一个 class 将 Array 转换为 List,因为 Realm 不接受数组。
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
}
}
然后在您的 ChatGroups class 中您必须调用 Transform 函数来进行转换,进行以下更改:
updated_by <- map["updated_by"]
members <- map["member"]
对此:
updated_by <- (map["updated_by"], ListTransform<QuorgUser>())
members <- (map["member"], ListTransform<GroupMember>())
我需要帮助来映射我的对象
领域模型:https://gist.github.com/n1tesh/7d6c6e155285dd6b39c8edba76f6eba5
我就是这样做的
// 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 响应:https://gist.github.com/n1tesh/bf84cbd930f8c76b340f21723a217ebe
但是我遇到了错误
fatal error: unexpectedly found nil while unwrapping an Optional value
请帮我解决我做错的地方。
在您的 ChatGroup
class 中您已声明
dynamic var image: String = ""
但在您的回复中,您在 JSON 回复的图像键中得到的是空值。
您需要将声明转换为:
dynamic var image: String? = nil
创建一个 class 将 Array 转换为 List,因为 Realm 不接受数组。
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
}
}
然后在您的 ChatGroups class 中您必须调用 Transform 函数来进行转换,进行以下更改:
updated_by <- map["updated_by"]
members <- map["member"]
对此:
updated_by <- (map["updated_by"], ListTransform<QuorgUser>())
members <- (map["member"], ListTransform<GroupMember>())