我是Swift的新手,问了几个问题,我对如何为对象获取正确的类型感到有些困惑,但我相信我已经弄清楚了。

我有一个用户对象,它是一个对象映射器模型。

我试图将此对象映射器模型转换为数组。

https://github.com/Hearst-DD/ObjectMapper

但是我收到错误Cannot specialize a non-generic definition

这是我要转换的变量:

fileprivate var userDataSource = Mapper<User>().Array<Any>(User)


及其定义的扩展:

extension AccountViewController: GetUserDelegate {
    func getUserSuccess(user: User) {
        self.userDataSource = User
    }
}


到模型的原始映射在这里完成:

guard let user = Mapper<User>().map(JSONObject: value)


用户类如下所示:

class User: Mappable {
    required init?(map: Map) {

    }

    init() {}

    var id: Int?
    var firstName: String?
    var lastName: String?
    var displayName: String?
    var image: URL?
    var about: String?
    var email: String?
    var password: String?
    var authToken: String?


如果需要,我可以添加更多内容。

我在这里误会什么?我看到的关于此错误的所有示例似乎都不适合我的情况。

所需的最终输出:

["Name", "Bob Jim"],
["MC #", "1234567"],
["Company Name", "Bob's Truckin"],
["Truck Type", "Flat Bed"],
["Cell", "(555) 555-5555"],
["Dispatch", "(999) 999-9999"],
["Favorite Destinations", "Los Angeles"]

最佳答案

我搜集到您想要一个用户数组作为数据源,
我会像其他数组一样声明它:

var userDataSource = [User]()


要么

var userDataSource = Array<User>()


并更新数据源,

extension AccountViewController: GetUserDelegate {
    func getUserSuccess(user: User) {
        self.userDataSource.append(user)
    }
}

10-05 20:45
查看更多