如何在使用 Parse 和 swift 保存数据后立即获取 objectId

How to get objectId immediately after save data with Parse and swift

    var cardObject = PFObject(className: "YourCard")
    cardObject["cardNumber"] = cardNumber
    cardObject["balance"] = balance
    cardObject["expire"] = date
    cardObject["validFlg"] = cardStatus
    cardObject.saveInBackgroundWithBlock {
        (success: Bool!, error: NSError!) -> Void in
        if (success != nil) {
            NSLog("Object created with id: \(cardObject.objectId)")
        } else {
            NSLog("%@", error)
        }
    }
    dbId = cardObject.objectId

获取不到objectId,如何获取? 非常感谢您。

正如你的函数名所说,它是一个称为异步的函数。这意味着主线程不会等待函数完成。所以你会得到一个(仍然)空的objectId。

要在 saveInBackground 完成后获取您的 objectID,您必须将获取 ID 的行放入 if 子句中。

 var cardObject = PFObject(className: "YourCard")
    cardObject["cardNumber"] = cardNumber
    cardObject["balance"] = balance
    cardObject["expire"] = date
    cardObject["validFlg"] = cardStatus
    cardObject.saveInBackgroundWithBlock {
        (success: Bool!, error: NSError!) -> Void in
        if (success != nil) {
            NSLog("Object created with id: \(cardObject.objectId)")
            //Gets called if save was done properly
            dbId = cardObject.objectId

        } else {
            NSLog("%@", error)
        }
    }

另一种选择是在主线程中调用 save()。这样函数在您调用 objectId 之前完成。 Parse 不建议这样做,但有可能:

cardObject.save()
dbId = cardObject.objectId