将 PFPointer 保存在变量中

Save PFPointer in a variable

我在尝试将 objectId 保存在变量上然后使用此变量通过指针进行查询时遇到了一些问题。

我有以下代码:

  var currentObject : PFObject?
var objId : NSString?




override func viewDidLoad() {
    super.viewDidLoad()


    if let object = currentObject? {
        subjectName.text = object["name"] as? String
        roomLabel.text = object["room"] as? String
        teacherLabel.text = object["teacher"] as? String


    }

    var query = PFQuery(className:"Calendar")
    query.whereKey("subjectId", equalTo: objId)
    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!)
        }
    }







    // Do any additional setup after loading the view.
}

代码本身是在某些标签上显示某个对象的内容。 我想将对象 ID 保存在 objId 变量中。 似乎没有错误,但是当我 运行 代码时,我得到以下错误:

错误="pointer field subjectId needs a pointer value";

我做错了什么?

subjectId 是一个指针,但查询正在针对字符串测试它。 (这不是一个令人惊讶的错误,因为该变量的命名具有误导性......以 Id 作为后缀,我们希望它是一个字符串。subjectPointer 将是一个更好的后缀)。

要修复,请使用 objectWithoutDataWithClassName:objectId 将 id 变成指针。使用 objId 作为 objectId,class 名称是包含具有该 ID 的对象的 table 的名称(希望您的 table 被命名为 "Subject").

编辑 - 这是我在 swift 上的最佳表现(也不是我的语言)

let pointer = PFObject(withoutDataWithClassName:"Subject" objectId:objId)
query.whereKey("subjectId", equalTo:pointer)

我使用"Subject"作为table名称,但您必须将其替换为包含id为objId的对象的table的真实名称。