2015-06-30 43 views
2

我用解析我的應用程序。我希望讓用戶能夠輸入他們想要在解析通過通過文本框發送並保存到用戶的郵件柱PFRelation保存按鈕,在視圖控制器消息和消息將被保存爲一個數組,並顯示在tableView保存在解析當前用戶的郵件列表與SWIFT

的問題是我不知道如何在文本框添加文本到一個數組中,並保存它來解析。

任何幫助表示讚賞,讓我知道如果你需要任何額外的信息!

UPDATE:

These是我解析的類「用戶」

This的截圖是「朋友」欄目

我還沒有創建的消息列在我的當前用戶的好友列表因爲當在Xcode運行relationForKey代碼,將自動爲我創造

UPDATE 2:

這是我的代碼:

@IBAction func addMessage(sender: AnyObject) { 
    var newMessage = addMessageText.text 
    let message = PFObject(className: "Messages") 
    var query = PFQuery(className: "Messages") 
    message["messageTextColumn"] = newMessage 



    message.saveInBackgroundWithBlock { 
     (success: Bool, error: NSError?) -> Void in 
     if (success) { 


      println("added to Message Class") 
      query.whereKey("messageTextColumn", equalTo: newMessage) 
      query.getFirstObjectInBackgroundWithBlock{(object:PFObject!, error: NSError!) -> Void in 
       if error == nil { 
        let relation = PFUser.currentUser().relationForKey("Messages") 
        var addMessageWithObject = object 
        if addMessageWithObject != nil { 
         relation.addObject(addMessageWithObject) 
         println("Added with getFirstObject") 
        } 
        else{ 
         println("Error Added with getFirstObject") 
        } 
       } 
      } 



     } else { 
      println("added to Message class Error") 
     } 
    } 
    } 

我第一次保存新的消息給數組,然後我將它保存與saveInBackgroundWithBlock ..我在內心裏查詢該消息將其添加到關係。

,我已經添加的消息出現消息類表而不是在該用戶的關係,但它顯示登錄

"added to Message Class" and "Added with getFirstObject" 

這意味着我的代碼執行完全一樣是應該的。可能是關於該方法?
UPDATE 3這是

<Messages: 0x7fd4484f75f0, objectId: LFXoSaHfQl, localId: (null)> { 
ACL = "<PFACL: 0x7fd4484d2e70>"; 
messageTextColumn = 9; 

}調用println對象

UPDATE 4 這是我的代碼

@IBAction func addMessage(sender: AnyObject) { 
    var newMessage = addMessageText.text 
    let message = PFObject(className: "Messages") 
    var user = PFUser.currentUser() 
    var query = PFQuery(className: "Messages") 
    message["messageTextColumn"] = newMessage 

     message.saveInBackgroundWithBlock { 
      (success: Bool, error: NSError?) -> Void in 
      if (success) { 


       println("added to Message Class") 
       query.getFirstObjectInBackgroundWithBlock{(object:PFObject!, error: NSError!) -> Void in 
        if error == nil { 
         var addMessageWithObject = object 
         if addMessageWithObject != nil { 
          user.saveInBackground() 
          println("Added with getFirstObject") 
         } 
         else{ 
          println("Error Added with getFirstObject") 
         } 
        } 
       } 
      } 
    } 
} 

用戶列是(未定義)如屏幕截圖這裏 Messages class table
一個d錯誤日誌can't add non pointer to relation回來

我該如何解決這個問題?謝謝!

+1

什麼是您解析數據庫結構來存儲郵件的用戶?這也很好,你可以試試這個。 – kRiZ

+0

我試過saveInBackgroundWithBlock,但後來我意識到它現在不能工作,它實際上是空的快速文件 – sin90

+0

好吧。你能夠顯示數據庫結構嗎?田野? – kRiZ

回答

0

這裏就是你要做的:

  1. 上解析
  2. 手動創建MessagemessagesRelation類型與目標類user表添加爲您Message表。
  3. 在你的代碼,在你的按鈕觸發:

    // Get the message text from your textField 
    let messageText = textField.text 
    
    // Create your new Message object 
    let newMessage = PFObject(className: "Message") 
    // ... Add your data to your new message object 
    newMessage["messageTextColumn"] = messageText 
    
    newMessage.saveInBackgroundWithBlock { 
        (success: Bool, error: NSError?) -> Void in 
        if (success) { 
         // Add the new message to the user's relation 
         let relation = yourUser.relationForKey("messagesColumnName") 
         relation.addObject(newMessage) 
    
         // Save the user object 
         yourUser.saveInBackground() 
        } else { 
         // There was a problem, check error.description 
        } 
    }   
    

Here's a link to Parse's Relation reference

UPDATE:

缺少代碼來保存用戶對象。

query.getFirstObjectInBackgroundWithBlock{(object:PFObject!, error: NSError!) -> Void in 
      if error == nil { 
       let relation = PFUser.currentUser().relationForKey("Messages") 
       var addMessageWithObject = object 
       if addMessageWithObject != nil { 
        relation.addObject(addMessageWithObject) 

        PFUser.currentUser().saveInBackground() 

        println("Added with getFirstObject") 
       } 
       else{ 
        println("Error Added with getFirstObject") 
       } 
      } 
     } 

更新2:

消息而不PFRelation:

  1. 添加列(比方說user)與目標類型指針作爲_user到Messages表來標識每個消息由他們的用戶。
  2. 保存新的消息:保存新的消息對象像上面(只是不添加關係和it'e相關的代碼):

    @IBAction func addMessage(sender: AnyObject) { 
        var newMessage = addMessageText.text 
    
        let message = PFObject(className: "Messages") 
        message["messageTextColumn"] = newMessage 
        message["user"] = PFUser.currentUser() 
    
        message.saveInBackgroundWithBlock {(success: Bool, error: NSError?) -> Void in 
         if (success) { 
          println("added to Message Class") 
         } else { 
          // Error saving message 
         } 
        } 
    } 
    
  3. 查詢消息的用戶:您可以查詢使用當前用戶作爲約束條件,因此無論某個特定設備切換到哪個設備,他/她都將只收到他的消息。

    var query = PFQuery(className:"Messages") 
    query.whereKey("user", equalTo:PFUser.currentUser()) 
    query.findObjectsInBackgroundWithBlock { 
        ... 
    } 
    
+0

評論不適用於擴展討論;這個對話已經[轉移到聊天](http://chat.stackoverflow.com/rooms/82222/discussion-on-answer-by-kriz-save-current-users-message-list-in-parse-with- SWIF)。 – Taryn

+0

問題解決了。 – sin90

+0

您確定您的用戶對象在Parse上進行了身份驗證嗎? – kRiZ

相關問題