質問に深く入り込む前に。私の目標は、回答に影響を与える可能性がありますが、クラウドに存在しなくなった場合にObject
データを削除することです。
したがって、配列がある場合は_["one", "two", "three"]
_
次に、私のサーバーで_"two"
_を削除します
私の領域で変更を更新してほしい。
これを行う最良の方法は、特定のObject
のすべてのデータを削除してから、my REST APIを呼び出して新しいデータをダウンロードすることです。より良い方法がある場合は、私にお知らせください。
さて、ここに私の問題があります。
オブジェクトがありますNotifications()
REST APIが呼び出されるたびに、ダウンロードする前に、これを実行しています:
_let realm = Realm()
let notifications = Notifications()
realm.beginWrite()
realm.delete(notifications)
realm.commitWrite()
_
実行後にこのエラーが発生します:_Can only delete an object from the Realm it belongs to.
_
だから私はこのようなものを試しました:
_for notification in notifications {
realm.delete(notification)
}
realm.commitWrite()
_
Xcode内で発生するエラーは次のとおりです:_"Type Notifications does not conform to protocol 'SequenceType'
_
ここからどこに行くべきか本当にわからない。
領域を理解しようとしています。まったく新しい
注:realm.deleteAll()
は機能しますが、すべてのレルムを削除したくありません。特定のObjects
あなたはこれを探しています:
let realm = Realm()
let deletedValue = "two"
realm.write {
let deletedNotifications = realm.objects(Notifications).filter("value == %@", deletedValue)
realm.delete(deletedNotifications)
}
またはおそらくこれ:
let realm = Realm()
let serverValues = ["one", "three"]
realm.write {
realm.delete(realm.objects(Notifications)) // deletes all 'Notifications' objects from the realm
for value in serverValues {
let notification = Notifications()
notification.value = value
realm.add(notification)
}
}
理想的には、Notifications
に主キーを設定して、すべてのローカルオブジェクトを単純にすべて(またはほぼ)再作成するという極端なアプローチを取るのではなく、既存のオブジェクトを更新できるようにします。