PFObject を取得し、投票数に 1 を追加して、Parse に再保存しようとしています。
Swift を使用して PFObject を正常に取得していますが、incrementKey() 関数を使用してネストされた値をインクリメントしようとすると問題が発生します。
私が最初に試した:
var query = PFQuery(className:"Quests")
query.getObjectInBackgroundWithId(questId) {
(retrievedQuest: PFObject?, error: NSError?) -> Void in
if error != nil {
println(error)
} else {
if let theQuest = retrievedQuest {
if let options = theQuest["options"]{
println(options[row])
options[row].incrementKey("votes", byAmount: 1)
}
}
}
}
次のエラーが表示されます。
-[__NSDictionaryM incrementKey:byAmount:]: unrecognized selector sent to instance 0x7f8acaf97dd0
私は次に試しました:
var options = theQuest["options"] as! [PFObject]
そして得た:致命的なエラー:NSArray要素がSwift配列要素タイプと一致しませんでした
次に、PFObject 内の要素を分解して、「投票」を手動でインクリメントしようとしました
var query = PFQuery(className:"Quests")
query.getObjectInBackgroundWithId(questId) {
(retrievedQuest: PFObject?, error: NSError?) -> Void in
if error != nil {
println(error)
} else {
if let theQuest = retrievedQuest {
var options = theQuest["options"] as! NSArray
var theOption = options[row] as! NSDictionary
var theVotes = theOption["votes"] as! Int
theVotes++
retrievedQuest?.saveInBackground()
おそらく、この方法で theVotes をインクリメントしても retrieveQuest に影響を与えないことは明らかです。
どうすれば望ましい結果を得ることができるかについてのアイデアはありますか?