Ios 取消装箱+;“本土王国”;列表“;对象
更新 最后,Ios 取消装箱+;“本土王国”;列表“;对象,ios,swift,realm,unbox,Ios,Swift,Realm,Unbox,更新 最后,Unbox库的作者回答了我的问题。 我试图使用Unbox创建Realm对象,并使用List在其中创建其他相关对象。来自服务器的JSON响应具有此结构 [ { "name": "bla bla", "desc": "bla bla", "sequential": true, "createdAt": "2017-01-23T09:58:05.095Z", "hmImages": [ { "urlBase": "
Unbox
库的作者回答了我的问题。
我试图使用
Unbox
创建Realm
对象,并使用List
在其中创建其他相关对象。来自服务器的JSON
响应具有此结构
[
{
"name": "bla bla",
"desc": "bla bla",
"sequential": true,
"createdAt": "2017-01-23T09:58:05.095Z",
"hmImages": [
{
"urlBase": "https://blabla.com",
"fullresPath": "/blaPath/iyba783fR81L8y.jpg",
"id": "bla bla"
},
{
"urlBase": "https://blabla.com",
"fullresPath": "/blaPath/iyba783fR81L8y.jpg",
"id": "bla bla"
}
],
"tags": [],
"id": "bla bla"
},
{
"name": "bla bla",
"desc": "bla bla",
"sequential": true,
"createdAt": "2017-01-23T09:58:05.095Z",
"hmImages": [
{
"urlBase": "https://blabla.com",
"fullresPath": "/blaPath/iyba783fR81L8y.jpg",
"id": "bla bla"
}
]
"tags": [],
"id": "bla bla"
}
]
请注意,根对象是字典的数组。每个字典都有一个图像字典的数组
在领域
中保存对象的类如下所示:
// MARK: - Realm
final class Challenge: Object {
dynamic var id = ""
dynamic var name = ""
dynamic var desc = ""
dynamic var sequential = false
dynamic var createdAt = Date()
dynamic var btPlayground = ""
// Relations
let hmImages = List<Image>()
let tags = List<Tag>()
override static func primaryKey() -> String? {
return "id"
}
}
// MARK: - Unboxable
extension Challenge: Unboxable {
convenience init(unboxer: Unboxer) throws {
self.init()
// Date formatter
let dateFormatter = ISODateFormatter()
id = try unboxer.unbox(key: "id")
name = try unboxer.unbox(key: "name")
desc = try unboxer.unbox(key: "desc")
sequential = try unboxer.unbox(key: "sequential")
createdAt = try unboxer.unbox(key: "createdAt", formatter: dateFormatter)
btPlayground = try unboxer.unbox(key: "btPlayground")
}
}
extension List<T>: UnboxableByTransform {
public typealias UnboxRawValue = [[String:Any]]
public static func transform(unboxedValue: Array<[UnboxableDictionary]>) -> List<T>? {
}
}
但是没有起作用。
有什么想法吗
谢谢 你只是用了一种错误的方式。对于json,请阅读
如果你坚持自己的方式。您应该考虑,如果领域不接受您在public typealias UnboxRawValue=[[String:Any]]]
中使用的Any
类型,则只能使用领域列出的类型。它们是Bool、Int8、Int16、Int32、Int64、Double、Float、String、NSDate和NSData