【问题标题】:Swift ! does not remove Optional()迅捷!不删除 Optional()
【发布时间】:2014-12-15 22:07:19
【问题描述】:

之前,我已经成功添加了一个!强制展开以从变量中删除“Optional()”。我无法在 Parse.com 返回的数据中执行此操作

    query.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]!, error: NSError!) -> Void in
        if error == nil {

            for object in objects {
                println(object[myObject]!)
            }

        } else {
            println("Error: \(error) \(error.userInfo!)")
        }

    }

在上面的示例中,Parse.com 类中的整个表被返回并打印到控制台。不过,

可选(...)

为每一行返回,即使我使用 !最后

我错过了什么?

(注意:myObject 是 Parse Class 数据库中 Column 的名称)

【问题讨论】:

  • 一种可能的解释是您将选项存储在对象中。当您使用 object[myObject] 访问它时,它会被包装在另一个可选中。所以你得到 Optional(Optional(something)).
  • 你是对的。我将对象解包成一个新对象,然后解包新对象,Optional 消失了

标签: swift asynchronous parse-platform optional


【解决方案1】:

MirekE 是对的。它是一个嵌套的 Optional(Optional())。

修复我:

println(object[myObject]!!)

【讨论】:

  • 欢迎堆栈溢出。 :-) 不要忘记将您自己的答案标记为已接受(可能需要等待一段时间……不确定)。系统会因您没有得到公认答案的问题而惩罚您。
  • 在 Swift 2 中,你只需要一个!例如。 print(object[myObject]!) 来解决这个问题,感谢您的回答! :)
  • 优秀。我有 print(array[1]["demo"]!) 但“可选(bla bla)”仍然出现,直到我添加了第二个感叹号。我想这是因为我正在访问一个二维数组。
  • 如何在此答案中添加 +10? ;-)
【解决方案2】:

您只需将 "!" 放在变量的末尾,在打印区域中

self.addressLabel.text = "\(subThoroughfare) \(p.thoroughfare!) \n \(p.subLocality!) \n \(p.subAdministrativeArea!) \n)".

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    相关资源
    最近更新 更多