【问题标题】:How do you access an object's fields from a Parse query result in Swift?如何从 Swift 中的 Parse 查询结果中访问对象的字段?
【发布时间】:2014-11-25 21:53:13
【问题描述】:

Parse 文档提供了使用 Swift 进行查询的示例,它们显示了访问内置字段(如 objectId 或 count)的示例,但是如何访问对象的列之一呢?

    var query = PFQuery(className: "MyObject")
    query.findObjectsInBackgroundWithBlock {
            (objects: [AnyObject]!, error: NSError!) -> Void in
            if !(error != nil) {
                for object in objects {
                    println(object["name"])
            }
            else {
                println("%@", error)
            }
    }

得到错误“AnyObject”不可转换为字符串。

object.objectForKey("name")

还给出错误:“找不到接受提供的参数的 'objectForKey' 的重载”

现在我也尝试了“as PFObject”或类似的东西,但它也会导致错误,而且 Parse 的文档没有显示类似的东西。 “类型 '[AnyObject]' 不能隐式向下转换为 'PFObject';您的意思是使用 'as' 强制向下转换吗?”

然后我应用修复,新的错误是“类型'PFObject'不符合协议'SequenceType'

也尝试在循环内向下转换

let pf = object as PFObject

但这似乎没有帮助,因为当我这样做时

let name = pf["name"]

我得到“'AnyObject' 不能转换为 'String'”

感谢您的帮助。我确定我遗漏了一些明显的东西,因为我还没有找到任何东西;

【问题讨论】:

  • 你试过let name = pf["name"] as String吗?
  • 做到了,谢谢。所以你总是不得不像这样投射东西吗?在下面添加它作为答案,我会选择它。

标签: ios swift parse-platform


【解决方案1】:

您需要显式转换您正在检索的属性 -

let name = pf["name"] as String

【讨论】:

    【解决方案2】:

    这对我有用:

        var query = PFQuery(className: "People")
        query.findObjectsInBackgroundWithBlock {
            (objects: [AnyObject]!, error: NSError!) -> Void in
    
            if error == nil {
    
                // query successful - display number of rows found
                println("Successfully retrieved \(objects.count) people")
    
                // print name & hair color of each person found
                for object in objects {
    
                    let name = object["name"] as NSString
                    let color = object["hairColor"] as NSString
    
                    println("\(name) has \(color) hair")
    
                }
            } else {
    
                // Log details of the failure
                NSLog("Error: %@ %@", error, error.userInfo!)
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多