我正在尝试从Parse数据控制器中的一列数据中访问随机值。我创建了一个如下查询,但不断收到一条错误,上面写着“调用中的额外参数”,其中显示了query.orderbyDescending(objectId1)。如果您不熟悉Parse,则会有一列名为objectId的String数据,每行数据都有一个objectId。 Choices,votes,votes2,optionName和optionName2每个都有自己的列。
var query = PFQuery(className: "VoteCount")
let objectId1: AnyObject! = voteCount1["objectId"]
query.orderByDescending(objectId1) {
(voteCount1: PFObject!, error: NSError!) -> Void in
if error != nil {
NSLog("%@", error)
} else {
voteCount1.incrementKey("votes")
voteCount1.saveInBackgroundWithTarget(nil, selector: nil)
let votes = voteCount1["votes"] as Int
let votes2 = voteCount1["votes2"] as Int
let option1: AnyObject! = voteCount1["optionName"]
let option2: AnyObject! = voteCount2["optionName2"]
self.pollResults1.text = "\(votes)"
self.showOption1.text = "\(option1)"
self.showOption2.text = "\(option2)"
}
}
我在viewDidLoad方法中定义了所有变量:
var voteCount1 = PFObject(className: "VoteCount")
voteCount1["choices"] = 2
voteCount1["votes"] = Int()
voteCount1["votes2"] = Int()
voteCount1["optionName"] = String()
voteCount1["optionName2"] = String()
voteCount1["objectId"] = String()
我做错了什么?我想做的就是从我的Parse数据控制器中的随机objectId收集我的viewDidLoad方法中定义的所有变量。 orderByDescending查询不是这样做的吗?
答案 0 :(得分:1)
orderByDescending
需要一个字符串,而您提供AnyObject!
。请注意,如果您要分配非零值,则不必将变量声明为隐式解包。如果它可以为null,则使用普通的可选项,否则使用非可选项。
此外,PFObject
已经公开了objectId
字符串属性,因此您不必使用下标来检索它:
let objectId1 = voteCount1.objectId
但是我注意到代码中存在概念错误:您没有按字段值对查询进行排序 - 您可以通过字段键(即字段名称)进行排序:
query.orderByDescending("objectId")
此外,我非常确定objectId
在存储时会自动分配一个唯一值,因此您不必须为其分配值,例如你在代码的最后一行做了:
voteCount1["objectId"] = String()