默认值可选swift不会使它成为nonOptional

时间:2015-09-15 07:32:41

标签: ios swift

我设置了一个默认的字符串值?运营商。但我得到一个可选的字符串?

    request(.GET, CUSTOMER_URL, parameters: params, encoding: .URL).responseJSON { (request, response, result) -> Void in
        var message = JSON(result.value ?? "")["message"].string ?? "Default value to make it nonOptional"
        switch(result) {
        case .Success(let json):
            if let customer = JSON(json)["customer"].dictionaryObject {
                GlobalCache.sharedInstance.setCustomer(customer)
            }
            completion(succeed: response?.statusCode == 200, message: message)
        case .Failure(_,_):
            completion(succeed: false, message: message)
        }
    }

message is String?

预期行为

enter image description here

意外行为

enter image description here

2 个答案:

答案 0 :(得分:1)

您使用的Xcode版本是什么?我无法在Xcode 7 GM(7A218)中重现指定的行为。如果您的版本较低,则看起来像以前测试版中的错误。

enter image description here

答案 1 :(得分:0)

这类似于Providing a default value for an Optional in Swift?

您可以使用类型注释来强制使用非可选值:

var message: String = JSON(result.value ?? "")["message"].string ?? "Default value"