我只在文档中找到了查询如何选择数据的样子。 据我所知,只有一种方法可以收集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'的变异成员
使用查询返回的数据“正常”工作的正确方法是什么?
另一个问题是:由于这些查询是异步的,所以它们稍后完成并且方法更早地“完成”,这样我的数组名称在显示视图时为空,我在稍后阶段接收数据。在将视图传送到设备之前,将所有数据都可用的最佳做法是什么?
非常感谢!!
答案 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元素都将填充到变量名中并删除最后一个值。但是数组将获得附加的新值。例如:
objects
的第一个索引处的值会加载到object
中。例如,值为“John”。name
的值现在是当前循环的对象[“name”]的值。因此name
的值为John
object
内加载,现在有Michael
字符串。 name
的新值现在是object
的值。因此,name
的值现在为Michael
等等。