创建对象时获取对象ID(Parse.com)

Tom*_*mer 3 object parse-platform swift

我想在下面创建对象时将字符串值设置为对象id.目前它打印"nil".有任何想法吗?谢谢

    var date:NSDate = currentDatePicker.date
    var DOB:NSDate = DOBPicker.date

    var user = PFUser.currentUser()

    var report = PFObject(className:"reports")
    report["name"] = nameTextField.text
    report["DOB"] = DOB
    report["date"] = date
    report["user"] = user
    report.saveInBackground()

    var ojId = report.objectId
    println(ojId)
Run Code Online (Sandbox Code Playgroud)

Ant*_*nio 10

saveInBackground是一个异步方法,所以它不会等待.未设置id的原因是因为尚未保存实体.

我认为你应该使用saveInBackgroundWithBlock:和检索块中的对象id形式(在实体保存后执行):

var report = PFObject(className:"reports")
report["name"] = nameTextField.text
report["DOB"] = DOB
report["date"] = date
report["user"] = user
report.saveInBackgroundWithBlock { (success, error) -> Void in
    if success {
        var ojId = report.objectId
        println(ojId)
    }
}
Run Code Online (Sandbox Code Playgroud)

或者也可以save同步执行 - 但不要使用主线程中的:

report.save()
var ojId = report.objectId
println(ojId)
Run Code Online (Sandbox Code Playgroud)