从Swift 3中返回类型为[String]的函数提前返回

时间:2017-03-10 04:56:55

标签: swift3 swift-guard fail-fast-fail-early

如果满足某些条件,我有一个返回 String 数组的函数。但是我想在我的函数中使用早期返回功能。像这样:

func fetchPerson() -> [String] {
    guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
        return nil
    }
    .......
    .......
}

但我面临的问题包括:

  

Nil与返回类型' [String]'

不兼容

我尝试只编写return语句。但它也失败了。怎么办?

修改:1

如果我只是想从此函数返回而没有任何值,该怎么办?回到调用此函数的行。类似的东西:

func fetchPerson() -> [String] {
    guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
        return //return to the line where function call was made
    }
    .......
    .......
}

1 个答案:

答案 0 :(得分:1)

您可以通过两种方式解决此错误。

  • [String]?的返回类型更改为[String]表示make 返回类型可选。

    func fetchPerson() -> [String]? {
        guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
            return nil
        }
        .......
        .......
    }
    
  • 将{return}语句从return []更改为return nil表示 返回空数组。

    func fetchPerson() -> [String] {
        guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
            return []
        }
        .......
        .......
    }