条件绑定中的绑定值必须是可选类型

时间:2014-11-26 09:24:24

标签: ios swift

我在显示

的行if let randNumber = arc4random_uniform(UInt32(count))上收到错误消息
  

条件绑定中的绑定值必须是可选类型。

我可能错了,但我认为我必须将UInt32值更改为可选值,但如果是这样,我该怎么做?如果没有那么我需要改变什么才能成为可选类型?

    var query = PFQuery(className: "VoteCount")
    query.countObjectsInBackgroundWithBlock {
        (count: Int32, error: NSError!) -> Void in
        if error == nil {
            if let randNumber = arc4random_uniform(UInt32(count)) {
                println("The random object is \(randNumber)\")
            }
        } else {
            println("error \(error)")
        }
    }

3 个答案:

答案 0 :(得分:1)

arc4random_uniform的返回类型为UInt32而不是UInt32?,因此无需条件。所以你可以选择:

var query = PFQuery(className: "VoteCount")
query.countObjectsInBackgroundWithBlock {
    (count: Int32, error: NSError!) -> Void in
    if error == nil {
        let randNumber = arc4random_uniform(UInt32(count))
        println("The random object is \(randNumber)")
    } else {
        println("error \(error)")
    }
}

答案 1 :(得分:0)

请试试这个

let randNumber = Int(arc4random_uniform(count))

答案 2 :(得分:-1)

  

在某些情况下,您可能完全确定Objective-C   方法或属性永远不会返回nil对象引用。要做   这个特殊场景中的对象更方便使用,Swift   将对象类型导入为隐式解包的选项。隐   未包装的可选类型包括的所有安全功能   可选类型。此外,您可以直接访问该值而无需   检查零或自己解开。 [source]

所以你可以这样做:

if let randNumber = arc4random_uniform(UInt32(count)) as UInt32!{ 
}