ios - 快速对象映射

标签 ios swift mapping

你好,我是 Swift 编程的初学者。

我正在尝试制作一个带有登录名的应用程序,它将获取用户并传递数据,解析为 JSON 并将其发送到服务器。

我需要让用户只接受两个值:user 和 pass from 字段,将整个对象解析为 JSON 并发送 post 请求。

首先,我在为映射创建 User struc 时遇到问题:错误出现在 init 的末尾“从初始化程序返回而不初始化所有排序的属性”。

struct User: Mappable{
    private var _username: String!
    private var _password: String!
    private var _firstname: String
    private var _lastname: String

    var username: String{

        get{
            return _username
        }set(username){
            self._username = username

        }
    }

    var password: String{
        get{
            return _password
        }set(password){
            self._password = password
        }
    }

    var firstname: String{
        get{
            return _firstname
        }set(firstname){
            self._firstname = firstname
        }
    }

    var lastname: String{
        get{
            return _lastname
        }set(lastname){
            self._lastname = lastname
        }
    }

    init(username: String, password: String){
        self._username = username
        self._password = password
    }

    init?(_ map: Map) {

    }

    mutating func mapping(map: Map) {
        username <- map["USERNAME"]
        password <- map["PASSWORD"]
        firstname <- map["FIRST_NAME"]
        lastname <- map["LAST_NAME"]
    }
}

我知道我要学很多东西,但现在没有时间,所以必须完成这个。我正在努力学习尽可能多的知识。

非常感谢

最佳答案

所有非可选属性都必须在退出初始化方法之前进行初始化。将它们设置为空字符串(或其他)应该可以消除错误。

init(username: String, password: String){
    self._username = username
    self._password = password
    self._firstname = ""
    self._lastname = ""
}

init?(_ map: Map) {
    self._username = ""
    self._password = ""
    self._firstname = ""
    self._lastname = ""
}

或者,您可以将这些属性设为可选。

关于ios - 快速对象映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38506052/

相关文章:

ios - 如何从推送通知警报将用户重定向到 App Store 上的应用程序?

ios - json 字段中键值的核心数据

ios - 单击键盘上的 "Done"可关闭键盘,但不会被关闭

ios - 使用组合和 SwiftUI 显示变化值的最简洁方法是什么?

mapping - Entity Framework 4.1 中具有不同名称的唯一列和导航属性的流畅映射/数据注释?

objective-c - UIScrollView:更准确/精确的 contentOffset 值?

ios - 将核心数据添加到现有的选项卡式应用程序(ios swift、Xcode6)

通过非可选的 Swift 协议(protocol)可选一致性

grails - 如何使用grails(create/list.gsp)从自动生成的 View 中插入/查看主键(电子邮件)?

python - 将列从一个数据帧映射到另一个数据帧以创建新列