Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 取消装箱+;“本土王国”;列表“;对象_Ios_Swift_Realm_Unbox - Fatal编程技术网

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