如何在Swift中检查Generic类型是否为nil

时间:2014-07-27 01:43:57

标签: swift

我正在尝试将所有函数从python复制到swift,从检查列表中的任何nill项开始,但是我很难检查可选项。出于某种原因,我可以发送一个可选的字符串(例如字符串),即使它说它是nil,它仍然通过if语句传递,它不在函数之外。关于如何处理这种或其他方式的任何建议?谢谢!

func `all`<T>(array: [T]) -> Bool {
    for item in array {
        if item as Any? {
            println(item) // Says Nil >.<
        }
        var test: T? = item
        if test {
            println("Broken") // Prints broken :(
        }
    }
    return true
}

var t: String?
all([t])

2 个答案:

答案 0 :(得分:2)

我不清楚你到底想要测试什么,但也许这会有所帮助。

该函数的参数应该是一个选项数组[T?]

直接将元素与nil进行比较可能也是有益的。可以将比较抽象为闭包,就像filter函数使用的那样。

func all<T>(array: [T?]) -> Bool {
    for element in array {
        if element==nil {
            return false
        }
    }
    return true
}

答案 1 :(得分:0)

我知道这是旧的,但仍在搜索中。刚刚花了几个小时寻找解决方案,我想我终于找到了。

if (item as AnyObject) is NSNull { 
    //value is nil
}