-1

如果我的服务器端在映射 JSON 之后,期望 null 值作为默认值(用 Java 编写),是否有可能在 Swift 中使用 nil 值,并映射它们并按原样发送它们而不展开?

我将变量设置为 Optionals,因为它可能在某些时候有价值,也可能不会。但是我不得不打开它,即使我想发送一个 nil 值。

这是我的代码:

private var _username: String?

var username: String{
    get{

        return self._username

    }set(username){

        self._username = username
    }
}

如果我尝试使用可选链接,它会迫使我在第 6 行执行此操作:

return (self._username?)!

但后来我得到了这种错误:“'?必须后跟调用、成员查找或下标”

有什么方法可以在 Swift 中使用 nil,或者我必须更改后端的默认值?

4

2 回答 2

2

您不能“按原样”传递它们,因为您的服务器不知道 Swift 中的 nil 是什么。但是,您可以将表示 nil 的字符串或 JSONnull值传递给您。

这是使用nil 合并运算符的好时机。

private var _username: String?

var username: String{
    get{

        // This will return the username if it is .Some or "null" if it is .None
        return self._username ?? "null"
        // Note that when you create the JSON object there is a difference between
        // "null" which is a string and null which is the JSON equivalent to nil.

    } set(username) {

        self._username = username
    }
}
于 2016-08-22T17:16:33.500 回答
0

只需这样做:

var username: String?

作为:

private var _username: String?

var username: String? {
    get{
        return self._username
    }set(username){
        self._username = username
    }
}
于 2016-08-22T17:24:06.990 回答