Swift:Nil与返回类型String不兼容

时间:2015-11-13 06:19:01

标签: ios swift xcode7 guard

我在Swift中有这个代码:

guard let user = username else{
        return nil
    }

但我收到以下错误:

Nil is incompatible with return type String

你知道为什么或如何在这种情况下返回nil?

我真的很感谢你的帮助

3 个答案:

答案 0 :(得分:23)

你的函数是否声明了一个可选的返回类型?

func foo() - >串? {...

详情请见:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html

  

请注意

     

C或Objective-C中不存在选项的概念。该   Objective-C中最接近的是从a返回nil的能力   否则将返回一个对象的方法,其中nil表示“   没有有效的对象。“

答案 1 :(得分:8)

您必须告诉编译器您要返回nil。你怎么样通过分配“?”在你的对象之后。例如看下面的代码:

func newFriend(friendDictionary: [String : String]) -> Friend? {
    guard let name = friendDictionary["name"], let age = friendDictionary["age"] else {
        return nil
    }
    let address = friendDictionary["address"]
    return Friend(name: name, age: age, address: address)
}

请注意,我必须告诉编译器我要返回的对象朋友是可选的“朋友?”。否则,它会向我撒一个错误

答案 2 :(得分:0)

* 您的函数是否声明了可选的返回类型?

func minAndmax(array:[Int])->(min:Int, max:Int)? {
    if array.isEmpty {
        return nil
    }

    var currentMin = array[0]
    var currentMax = array[0]

    for value in array {
        if value < currentMin {
            currentMin = value
        }
        else if value > currentMax {
            currentMax = value
        }
    
    }
    return (currentMin, currentMax)
}

if let bounds = minAndmax(array:  [8, -6, 2, 109, 3, 71]) {
    print(bounds)
}