在快速功能中返回nil

时间:2017-07-21 05:20:11

标签: swift

在Swift中,我有一个返回某种对象的函数。该对象是可选的。当它不存在时,我想我应该返回零,但斯威夫特禁止我这样做。以下代码无效:

func listForName (name: String) -> List {

        if let list = listsDict[name] {
            return list
        }   else {
            return nil
        } 
    }

它说:error: nil is incompatible with return type 'List'

但我不想返回类似空List对象的东西,我想在Optional为空时返回任何内容。怎么做?

1 个答案:

答案 0 :(得分:29)

要修复错误,您需要返回一个Optional:List?

func listForName (name: String) -> List? {

    if let list = listsDict[name] {
        return list
    }   else {
        return nil
    } 
}

或者只返回listsDict[name],因为它可以是可选的,也可以是列表本身。

func listForName (name: String) -> List? {
    return listsDict[name]
}
  

但我不想返回类似空List对象的东西,我想在Optional为空时返回任何内容。怎么做?

您有多种选择:

  • 返回可选列表(列表?)
  • 未找到数据时返回空列表
  • 返回异常(取决于上下文)
  • 使用枚举来表示Either / Result(类似于Optional,但可能会更好,具体取决于您的用例)