调用错误中的额外参数 - Swift

时间:2014-11-23 07:32:39

标签: ios swift parse-platform

我正在尝试从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查询不是这样做的吗?

1 个答案:

答案 0 :(得分:1)

orderByDescending需要一个字符串,而您提供AnyObject!。请注意,如果您要分配非零值,则不必将变量声明为隐式解包。如果它可以为null,则使用普通的可选项,否则使用非可选项。

此外,PFObject已经公开了objectId字符串属性,因此您不必使用下标来检索它:

let objectId1 = voteCount1.objectId

但是我注意到代码中存在概念错误:您没有按字段值对查询进行排序 - 您可以通过字段键(即字段名称)进行排序:

query.orderByDescending("objectId")

此外,我非常确定objectId在存储时会自动分配一个唯一值,因此您必须为其分配值,例如你在代码的最后一行做了:

voteCount1["objectId"] = String()