ios swift parse:从解析中获取数据并使用它们

时间:2015-02-25 12:17:42

标签: ios arrays swift object parse-platform

我只在文档中找到了查询如何选择数据的样子。 据我所知,只有一种方法可以收集1个或多个结果:

var query = PFQuery(className:"GameScore")
query.whereKey("playerName", equalTo:"Sean Plott")
query.findObjectsInBackgroundWithBlock {
  (objects: [AnyObject]!, error: NSError!) -> Void in
  if error == nil {
    // The find succeeded.
    NSLog("Successfully retrieved \(objects.count) scores.")
    // Do something with the found objects
    for object in objects {
        NSLog("%@", object.objectId)
    }
  } else {
    // Log details of the failure
    NSLog("Error: %@ %@", error, error.userInfo!)
  }
}

我无法弄清楚(因为我是初学者!)是如何访问对象数据。让我说我有字段“名称”,我怎么能得到它?什么是正确的语法?特别是如果我有超过1个结果?

我只会做一个结果:

var name = object["name"] as String
myArray.append(name)

即使那样也不对?在循环中使用“var xx = xx”?

如果我有多个结果,我该怎么办?

其他想法: 声明var名称:String!在我进行查询之前,然后:

name = object["name"] as String
self.myArray.append(name)

返回错误:[String]类型的不可变vaue只有名为'append'的变异成员

使用查询返回的数据“正常”工作的正确方法是什么?

另一个问题是:由于这些查询是异步的,所以它们稍后完成并且方法更早地“完成”,这样我的数组名称在显示视图时为空,我在稍后阶段接收数据。在将视图传送到设备之前,将所有数据都可用的最佳做法是什么?

非常感谢!!

1 个答案:

答案 0 :(得分:3)

您可以在对象上使用objectForKey。因此,您可以使用:{/ p>而不是var name = object["name"] as String

for object in objects {
    var name = object.valueForKey("name") as String
}

但其他部分绝对没问题。您可以在代码中的某处创建一个数组,然后将对象添加到其中。为此,您可以遍历对象,然后将对象添加到数组中。像那样:

 if error == nil {
    // The find succeeded.
    NSLog("Successfully retrieved \(objects.count) scores.")
    // Do something with the found objects
    for object in objects {
        var name = object["name"] as String
        myArray.append(name)
    }
  }

因为您可以重用var name因为每个loop元素都将填充到变量名中并删除最后一个值。但是数组将获得附加的新值。例如:

  1. 第一个循环。您objects的第一个索引处的值会加载到object中。例如,值为“John”。
  2. 变量name的值现在是当前循环的对象[“name”]的值。因此name的值为John
  3. 现在您将值添加到数组中。
  4. 第二个循环开始,第二个元素在object内加载,现在有Michael字符串。
  5. 变量name的新值现在是object的值。因此,name的值现在为Michael
  6. 等等。