【问题标题】:Updating PFObject not working as expcected更新 PFObject 未按预期工作
【发布时间】:2019-03-20 21:11:03
【问题描述】:

在这里,我试图在集合中的每个文档上设置一个状态字段(在 Parse-Server/Heroku 上的 mongoDB 中)。 下面的代码不是很复杂,但由于某种原因它失败了。我希望新的眼光能指出问题所在。

let query = PFQuery(className: "Book_List")
query.limit = 1024
query.findObjectsInBackground {
    (objects:[PFObject]?, error:Error?) -> Void in
    if (error == nil && objects != nil) {
        for book in objects! {
            book.setObject("0", forKey: "status")
            book.saveInBackground {
                (success: Bool, error: Error?) in
                if !success {print("FAILED.")} else {print("OK-OK.")}
                if error != nil {print("Error = \(String(describing: error))")}
            }
        }
    }

    if error != nil {
        print("Error = \(error.debugDescription)")
    }

    if objects == nil {
        print("We haven't found anything on Parse!!")
    }
}

我希望它在每个循环上运行并设置一个字段 ({"status": "0"})。但我只在调试控制台看到这个:

FAILED.
Error = Optional(Error Domain=Parse Code=101 "Object not found." UserInfo={code=101, temporary=0, error=Object not found., NSLocalizedDescription=Object not found.})
... [Error]: Object not found. (Code: 101, Version: 1.17.1)

由于我使用 PFQuery-findObjectsInBackground 获取对象,因此它们存在于某处。 那么为什么我会收到此错误消息?

【问题讨论】:

    标签: ios swift mongodb heroku parse-server


    【解决方案1】:

    不要单独保存每本书,而是尝试使用 +saveAllInBackground:block: 批量保存它

    let query = PFQuery(className: "Book_List")
    query.limit = 1024
    query.findObjectsInBackground { (objects:[PFObject]?, error:Error?) in
        if error == nil,
           let objects = objects {
            for book in objects {
                book.setObject("0", forKey: "status")
            }
            PFObject.saveAllInBackground(objects: objects) { (success: Bool, error: Error?) in
                if !success { print("FAILED.") } else { print("OK-OK.") }
                if error != nil { print("Error = \(String(describing: error))") }
            }
        }
    
        if error != nil {
            print("Error = \(error.debugDescription)")
        }
    
        if objects == nil {
            print("We haven't found anything on Parse!!")
        }
    }
    

    【讨论】:

    • 我试过了,但仍然得到同样的错误信息:[错误]:找不到对象。 (代码:101,版本:1.17.1)x(集合中的文档数)次。失败。
    • 我发现这个“找不到对象”。有点令人费解。
    • 我从未使用过它,所以无法进一步帮助您,抱歉:(
    • 没问题。我想我找到了解决方案。显然,只有在我登录时它才会让我修改一个对象(而插入一个新对象而无需登录)。
    猜你喜欢
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 2016-11-17
    • 2011-10-27
    • 1970-01-01
    相关资源
    最近更新 更多