Open gucchi43 opened 8 years ago
testというフィールドに、 [AAA, BBB, CCC, DDD]という配列があったとして、 [AAA, BBD, CCC, DDD]というように配列の中の1つの要素を置換したいです。 (要素の順番は変わっても問題ありません)
object.removeObjectsInArray("[BBB]", forKey: "test") object.addObject("BBD", forKey: "test") object.saveInBackgroundWithBlock
として、 要素を配列から削除して、 新たな要素を配列に加え、 非同期で保存
という感じにしたかったのですが、 object.saveInBackgroundWithBlock のところで落ちてしまい、コンソールには You can only add an item to a List. とエラーメッセージ吐かれてます。
object.saveInBackgroundWithBlock
object.removeObjectsInArray("[BBB]", forKey: "test") object.saveInBackgroundWithBlock ↓ 処理終了後 object.addObject("BBD", forKey: "test") object.saveInBackgroundWithBlock
のように 配列内の要素削除の変更して保存 ↓ その後、配列内に新しい要素を追加し保存 とすると通りました。 ですが、2回保存してるし、なんだかなーって感じです。
エラーメッセージの感じだと、仕様でこの方法では無理なのかなーと感じたのですが、 どなたか、フィールド内の配列で、ある要素を置換(削除して追加)する もっとスマートな方法知ってる方いましたらご教授していただいたいです。
試していないので何ですが、testの配列を一旦取り出して、内容を変更して、それを test の中にまるっと入れ替えてしまうのはダメでしょうか?
コメントありがとうございます。なるほど、それなら一回でいけるぽいです。やってみます!
testというフィールドに、 [AAA, BBB, CCC, DDD]という配列があったとして、 [AAA, BBD, CCC, DDD]というように配列の中の1つの要素を置換したいです。 (要素の順番は変わっても問題ありません)
として、 要素を配列から削除して、 新たな要素を配列に加え、 非同期で保存
という感じにしたかったのですが、
object.saveInBackgroundWithBlock
のところで落ちてしまい、コンソールには You can only add an item to a List. とエラーメッセージ吐かれてます。のように 配列内の要素削除の変更して保存 ↓ その後、配列内に新しい要素を追加し保存 とすると通りました。 ですが、2回保存してるし、なんだかなーって感じです。
エラーメッセージの感じだと、仕様でこの方法では無理なのかなーと感じたのですが、 どなたか、フィールド内の配列で、ある要素を置換(削除して追加)する もっとスマートな方法知ってる方いましたらご教授していただいたいです。