在swift函数中返回nil

在swift函数中返回nil,swift,Swift,在Swift中,我有一个返回某种对象的函数。该对象是可选的。当它不存在时,我想我应该返回nil,但Swift禁止我这样做。以下代码不起作用: func listForName (name: String) -> List { if let list = listsDict[name] { return list } else { return nil } } 它说:错误:nil

在Swift中,我有一个返回某种对象的函数。该对象是可选的。当它不存在时,我想我应该返回
nil
,但Swift禁止我这样做。以下代码不起作用:

func listForName (name: String) -> List {

        if let list = listsDict[name] {
            return list
        }   else {
            return nil
        } 
    }
它说:
错误:nil与返回类型“List”不兼容。


但我不想返回空列表对象之类的东西,我想在optional为空时不返回任何内容。如何执行此操作?

要修复此错误,您需要返回可选的:
列表?

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

但我不想返回空列表对象之类的东西,我想在optional为空时不返回任何内容。怎么做

您有几个选择:

  • 返回可选列表(列表?)
  • 未找到数据时返回空列表
  • 返回异常(取决于上下文)
  • 使用枚举表示其中一个/结果(类似于可选,但可能更好,具体取决于您的用例)

这是因为返回类型
List
不是一个可选的更改,返回类型通常是
List?
@CarpenterBlood thank,而主体可以是
return listsDict[name]
,这在很大程度上否定了函数的整个要点。虽然不是真正的傻瓜,他的问题是:
当optional为空时,我不想返回任何内容。怎么做?
。如上所述,有几种方法可以做到这一点