如何在Swift中将Parse objectId设置为指针?

时间:2015-06-02 01:42:28

标签: ios swift parse-platform

我需要用两个指针保存一些PFObject。一个是createdBy,它等于PFUser.currentUser()。另一个是card,它等于我的示例变量s8HiwfvKtQ。当我运行此代码时,我收到以下错误:

[Error]: invalid type for key card, expected *Cards, but got string (Code: 111, Version: 1.7.1)

我的代码在这里:

var ex = "s8HiwfvKtQ"

func addToWants() {
    let wants = PFObject(className:"Wants")
    wants["createdBy"] = PFUser.currentUser()
    wants["card"] = ex
    wants.save()
}

我做错了什么?

4 个答案:

答案 0 :(得分:2)

您不需要进行查询(因为您正在点击服务器,这是相对昂贵的)。相反,只需使用objectId创建 placeholder for the object 并使用它来填充指针。

答案 1 :(得分:1)

wants["card"]是一个Cards对象而不是String。您应该通过ex获取卡片,如下所示:

wants["card"] = query.getObjectWithId("ParseObjectIDString")

答案 2 :(得分:1)

我认为您在 Parse 数据浏览器中预先定义了数据架构,并且检测到card的类型应该是Cards的实例,而不是{{ 1}}。您需要在数据浏览器中更改数据架构才能完成。这就是您的错误消息所说的内容。

Parse 中,您可以在不预先定义任何数据模式的情况下创建数据。一旦您已经预先定义了数据模式,就必须遵循您的规则。

答案 3 :(得分:-1)

我明白了。我不得不对该对象进行查询,并将结果用作" card"的参数。指针。

var ex = "s8HiwfvKtQ"

func addToWants() {

    var query = PFQuery(className:"Cards")
    query.getObjectInBackgroundWithId("\(ex)") {
        (card: PFObject?, error: NSError?) -> Void in
        if error == nil && card != nil {
            let wants = PFObject(className:"Wants")
            wants["createdBy"] = PFUser.currentUser()
            wants["card"] = card
            wants.save()
        } else {
            println(error)
        }
    }
}