我有一个变量
var a: [AnyObject? -> Void]
我正在通过append方法向其中添加数据。现在我想检查变量是否为零。我尝试使用[]
但没有工作,也尝试了""
,这也没有用,任何人都可以告诉这个变量的含义以及如何检查它是否为零。
答案 0 :(得分:12)
据我所知,var a
是一个函数数组,它接受任何类型的可选Object,并返回void。所以这些函数的参数是可选的,但是数组本身不是:它不能是nil,或者它会被声明为[AnyObject? -> Void]?
,不是吗?
编辑:但是,如果您将此a
声明为可选(但为什么会这样做?) - 添加?
- 您检查可选的存在与if let
:
if let b = a {
// a not nil, do some stuff
} else {
// a is null
}
如果您只想检查数组是否为空,请使用Swift Array中的isEmpty
方法
答案 1 :(得分:5)
更新: Xcode 7.3 Swift 2.2
如果你想检查变量是否为零,你应该使用if let towwrap if you for you。无需创建第二个var。
let str = "123"
var a = Int(str)
if let a = a {
print(a)
}
或者
if let a = Int(str) {
print(a)
}
答案 2 :(得分:2)
在Swift中,nil不是指针 - 它缺少某种类型的值。任何类型的可选项都可以设置为nil,而不仅仅是对象类型。
因此,您可以使用以下代码进行检查:
let possibleNumber = "123"
let convertedNumber = possibleNumber.toInt()
if convertedNumber != nil {
println("convertedNumber contains some integer value.")
}
// prints "convertedNumber contains some integer value."
有关详情,请参阅 nil 。
答案 3 :(得分:1)
在Swift 3.0中
if let imageURL = dictObj["list_image"] as? String {
print(imageURL)
}
答案 4 :(得分:0)
如果让我们可以使用。如果let是Swift中的一个特殊结构,它允许你检查一个Optional是否包含一个值,以及它是否存在 - 用unwrapped值做一些事情。
var a:Int=0
if let b=a{
println(a)
} else {
println("Value - nil")
}
但对于字符串,您还可以使用.isEmpty()
如果您已将其初始化为""
。
var str:String=""
if !str.isEmpty(){
println(str)
}
答案 5 :(得分:0)
对我来说,当我使用AVFoundation对象时,上述解决方案都没有奏效。
当我尝试awk -F':' -v search="${input_name}" '$2 ~ search {print $0}' temp_phonebook
时,我会得到Type 'AVCaptureDeviceInput does not conform to protocol 'BooleanType'
,我会得到if (audioDeviceInput)
。
我的情况下的解决方案
Binary operator '!=' cannot be applied to operands of type 'AVCaptureDeviceInput' and 'nil'
if (audioDeviceInput.isEqual(nil))
是一个像任何其他指针一样的指针,可以这样引用,这就是为什么这样做的原因。