【问题标题】:Object not found for update error Parse Swift找不到更新错误的对象解析 Swift
【发布时间】:2016-01-08 07:24:49
【问题描述】:

我在 Xcode 7.2 上使用 parse,但无法快速更新对象。我想在解析类列“Approve”中更新我的布尔值,我的类名是“Request”,我有 String 类型的“FromUserName”列和 String 类型的“ToUsername”列

这是我的 swift 代码

 func block(){
    let name = self.userDelName
    let query = PFQuery(className: "Request")
    //let username = PFUser.currentUser()?.username!
    if let username = PFUser.currentUser()?.username! {
         query.whereKey("ToUsername", equalTo: username)
    }
    query.whereKey("FromUsername", equalTo: name)
    print(name+" IMHEHEHEHEHERRRR")
    query.getFirstObjectInBackgroundWithBlock{(object,error) -> Void in
        if error == nil {
                print(object)
                object!["Approve"] = false
                object!.saveInBackgroundWithBlock {(success: Bool, error: NSError?) -> Void in
                    if (success) {
                       print("success")
                    } else {
                        print("down")
                       print(error)
                    }
                }

               }
        }

    }

错误是

[Error]: object not found for update (Code: 101, Version: 1.11.0)

我现在不知道该怎么办。

感谢任何帮助。谢谢你

编辑:这是我保存的方法

requested = PFObject(className: "Request")
        requested!["From"] = PFUser.currentUser()
        requested!["FromUsername"] = PFUser.currentUser()?.username
        requested!["ToUsername"] = user
        requested!["To"] = newFriend
        requested!["Approve"] = true
         requested!.saveInBackgroundWithBlock {(success: Bool, error: NSError?) -> Void in
            if error == nil {
               print("success")
            }
            else{
                print(error)
            }
        }

【问题讨论】:

  • 首先发布您用来保存此对象的代码。我曾经遇到过类似的错误,问题是 parse 中的列是只读的。可能是您必须专门将该对象保存为具有读写权限,然后才能对其进行更新。
  • 我已经在我的问题中为您更新了保存方法。谢谢

标签: xcode swift parse-platform pfquery


【解决方案1】:

尝试将您的保存代码更改为:

    requested = PFObject(className: "Request")
    requested!["From"] = PFUser.currentUser()
    requested!["FromUsername"] = PFUser.currentUser()?.username
    requested!["ToUsername"] = user
    requested!["To"] = newFriend
    requested!["Approve"] = true
    requested.ACL?.setPublicWriteAccess(true)
     requested!.saveInBackgroundWithBlock {(success: Bool, error: NSError?) -> Void in
        if error == nil {
           print("success")
        }
        else{
            print(error)
        }
    }

行:

 ACL?.setPublicWriteAccess(true)

将设置它,以便任何人都可以编辑该对象。这可能不是你想要的。还有其他方法可以允许某人覆盖对象。您可以根据需要以及 Parse 后端的配置方式来使用它们:

    object.ACL?.setWriteAccess(allowed: Bool, forRole: PFRole)
    object.ACL?.setWriteAccess(allowed: Bool, forRoleWithName: String)
    object.ACL?.setWriteAccess(allowed: Bool, forUser: PFUser)
    object.ACL?.setWriteAccess(allowed: Bool, forUserId: String)

另请注意,这不适用于解析中的当前对象。仅适用于添加 setWriteAccess 方法后保存的对象。如果要在解析中编辑当前对象,则必须手动更改数据库本身的读写权限。

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 2018-10-16
    相关资源
    最近更新 更多