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

9

我正在尝试将Python的所有函数复制到Swift中,首先检查列表中是否有任何空项,但我很难检查可选项。由于某种原因,我可以发送可选字符串(例如字符串),即使它说它是零,它仍然通过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个回答

3

我不太清楚你想要测试什么,但也许这个可以帮助你。

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

直接将元素与nil进行比较可能也会有好处。这种比较可以抽象成一个闭包,就像filter函数一样使用。

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

3

我知道这是一个老问题,但它仍然被搜索。刚刚花了几个小时寻找解决方案,我想我终于找到了一个。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接