解包可选时,'AnyObject'不能转换为'String'

时间:2015-06-22 14:45:14

标签: ios swift parse-platform

下面的代码给出了错误“'AnyObject'不能转换为'String'”在我将“if let”语句打开以解开从Parse中提取的可选productData的行。我只是想从Parse中的对象中拉出一个String。我到处检查,所有标准答案/解决方案都无法正常工作。有什么想法吗?

此代码大部分直接来自Parse iOS文档Here

import Foundation

import Parse

func getDataFromParse () {

var productDataFromParse = PFQuery(className:"Product")

productDataFromParse.getObjectInBackgroundWithId("uyeXHufDgq") {

(productData: PFObject?, error: NSError?) -> Void in

if error == nil && productData != nil {

    if let productTitle = productData["productTitle"] as! String {
        self.productTitle = productTitle
    }


} else {
    println(error)
}
}

}

1 个答案:

答案 0 :(得分:0)

productData: PFObject?对象本身是可选的。你不能下标它,因为它需要先解开。您可以使用可选链接替换productData != nil检查。

在Swift 1.2中,您可以在同一语句中执行此操作并进行错误检查:

if let productTitle = productData?["productTitle"] as? String
   where error == nil {
    self.productTitle = productTitle
}

请注意?和方括号之间的其他productData