NIFCLOUD-mbaas / UserCommunity

ニフクラ mobile backend ユーザーコミュニティ
https://mbaas.nifcloud.com/
82 stars 18 forks source link

[iOS, swift]データストアのあるフィールド内の配列の中の要素を削除して、新たな要素を追加したい、スマートに!! #544

Open gucchi43 opened 8 years ago

gucchi43 commented 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.removeObjectsInArray("[BBB]", forKey: "test")
object.saveInBackgroundWithBlock
↓ 処理終了後
object.addObject("BBD", forKey: "test")
object.saveInBackgroundWithBlock

のように 配列内の要素削除の変更して保存 ↓ その後、配列内に新しい要素を追加し保存 とすると通りました。 ですが、2回保存してるし、なんだかなーって感じです。

エラーメッセージの感じだと、仕様でこの方法では無理なのかなーと感じたのですが、 どなたか、フィールド内の配列で、ある要素を置換(削除して追加)する もっとスマートな方法知ってる方いましたらご教授していただいたいです。

goofmint commented 8 years ago

試していないので何ですが、testの配列を一旦取り出して、内容を変更して、それを test の中にまるっと入れ替えてしまうのはダメでしょうか?

gucchi43 commented 8 years ago

コメントありがとうございます。なるほど、それなら一回でいけるぽいです。やってみます!