2015-08-26 60 views
0

我有一個按鈕,它將推送到一個feed,我希望每次單擊按鈕時在PFUser類中記錄Feed項目的名稱(「itemChosen」):無法爲PFUser添加字符串到陣列

@IBAction func buttonTapped(sender: UIButton) { 

     PFUser.currentUser()!.addObject(feedItem.feedItemName, forKey: "itemChosen") 
     PFUser.currentUser()!.saveInBackgroundWithBlock({ (success: Bool, error: NSError?) -> Void in 
      println(PFUser.currentUser()?.objectForKey("itemChosen")) 
     }) 
} 

我得到的錯誤:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Operation is invalid after previous operation.' 

如果我使用:

PFUser.currentUser()!.setObject(feedItem.feedItemName, forKey: "itemChosen") 

我的名字保存爲一個單一的字符串,但我想要將它追加到數組中。爲什麼不addObject工作,我該如何解決它?

+0

的_user類是LOGIN更好,並簽署了目的。這將是創建一個新的類進行解析,然後當您準備好保存數據時,您只需將其id與該數據關聯起來。 – Lamar

回答

1

嘗試這樣做:

@IBAction func buttonTapped(sender: UIButton) { 
    if PFUser.currentUser()!["itemChosen"] == nil { PFUser.currentUser()!["itemChosen"] = [String]() } 
    (PFUser.currentUser()!["itemChosen"] as! NSMutableArray).addObject(feedItem.feedItemName) 
    PFUser.currentUser()!.saveInBackgroundWithBlock({ (success: Bool, error: NSError?) -> Void in 
     println(PFUser.currentUser()?.objectForKey("itemChosen")) 
    }) 
} 

的問題是PFUser.currentUser!["itemChosen"]可以nil

編輯:我發現了一個辦法做到這一點使用Xcode中6:

extension PFUser { 
    var param: [String] { 
     get { 
      if let x = self["itemChosen"] as? [String] { 
       return x 
      } else { 
       return [] 
      } 
     } 
     set(val) { 
      self["itemChosen"] = val 
     } 
    } 
} 

@IBAction func buttonTapped(sender: UIButton) { 
    PFUser.currentUser()!.param.append(feedItem.feedItemName) 
    PFUser.currentUser()!.saveInBackgroundWithBlock({ (success: Bool, error: NSError?) -> Void in 
     println(PFUser.currentUser()?.objectForKey("itemChosen")) 
    }) 
} 
+0

感謝您的答案..我試過這個,我得到的是第2行'後綴操作數的錯誤!應該有一個可選類型;類型是() - > PFUser?'' - 所以我刪除!,我得到以下錯誤''() - > PFUser沒有名爲'subscript'''的成員 – SamYoungNY

+0

@SamYoungNY對不起,忘了寫一個初始化程序。現在編輯。 –

+0

謝謝,但不幸的是,我收到了同樣的錯誤 – SamYoungNY