2016-01-08 30 views
0

我在Xcode 7.2上使用解析,並且遇到用swift更新對象的麻煩。我想在解析類列「Approve」中更新我的布爾值,我的類名稱是「Request」,並且我有「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) 
      } 
     } 
+0

發佈您首先用於保存此對象的代碼。我曾經有過類似的錯誤,問題是解析中的列僅爲READ。這可能是因爲您必須將該對象專門保存爲具有讀取和寫入權限,因此可以更新它。 – joey

+0

我已經更新了我的問題中的保存方法。謝謝 – sin90

回答

0

試着改變你節省代碼這樣:

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) 

將設置它使任何人都可以編輯到對象。這可能不是你想要的。還有其他一些方法可以允許某人寫一個對象。您可以使用它們根據您的需要以及您解析後端配置:

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方法後保存的對象。如果要在解析中編輯當前對象,則必須手動更改數據庫本身的讀寫權限。