user2924482
user2924482

Reputation: 9140

Swift: Nil is incompatible with return type String

I have this code in Swift:

guard let user = username else{
        return nil
    }

But I'm getting the following errors:

Nil is incompatible with return type String

Any of you knows why or how I return nil in this case?

I'll really appreciate your help

Upvotes: 13

Views: 26966

Answers (3)

Josue Gisber
Josue Gisber

Reputation: 366

You have to tell the compiler that you want to return nil. How do you that? By assigning ? after your object. For instance, take a look at this code:

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)
}

Notice how I needed to tell the compiler that my object Friend, which I'm returning, is an optional Friend?. Otherwise it will throw an error.

Upvotes: 21

Lakshmipathi KV
Lakshmipathi KV

Reputation: 1

*Does your function declare an optional return type?

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)
}

Upvotes: 0

Andrei Nagy
Andrei Nagy

Reputation: 507

Does your function declare an optional return type?

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

See more on: https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html

NOTE

The concept of optionals doesn’t exist in C or Objective-C. The nearest thing in Objective-C is the ability to return nil from a method that would otherwise return an object, with nil meaning “the absence of a valid object.”

Upvotes: 28

Related Questions