我目前在我们的 iOS swift 应用程序中使用 Realm 进行本地缓存。当我在连接到网络时删除消息时,它会被删除,没有任何问题。但是,当我未连接到网络并删除消息时,该消息会被删除,但是稍后当我重新连接到网络时,服务器到 Realm 之间会发生数据同步,并且删除的对象会重新出现。
如何尝试进行反向同步,即将数据从 iPhone 中的本地 Realm 数据同步到后端服务器,以通知此类更改并删除它们。
@IBAction func deleteNote(_ sender: UIButton) {
alert.addAction(UIAlertAction(title: "DELETE_NOTE_CONFIRM".localized, style: .default, handler: { (action) -> Void in
let a = UIApplication.shared.delegate as! AppDelegate
Alamofire.request(Router.deleteIncomingMessage(incomingID: self.RealmNotes.incomingID)).responseJSON(completionHandler: { (r) -> Void in
})
a.rootViewController.reController?.ViewController.deleteRealmMessage(message: self.RealmNotes)
}
}}}
删除RealmMessage函数
func deleteRealmMessage(message: RealmIncomingMessage) {
try! realm.write {
realm.delete(message)
}
ReloadRealmTableView()
}
最佳答案
您需要在本地为每条记录管理 2 个标志“isDeleted”和“isSynced”。
现在,当您从本地删除特定记录并连接到互联网时,记录将从本地和后端物理删除,并且可以正常工作。
如果您没有连接到互联网,那么您需要设置这两个标志。 “isDeleted=1”和“isSynced=0”。因此,该特定记录在被删除时不会在本地显示。 (不是物理上的,而是“isDeleted=1”)。
当应用程序连接到互联网时,您需要检查“isSynced”标志以及哪些记录的标志为“0”(isSynced=0),您需要将所有记录传递到服务器进行更新。然后就可以物理删除标志为“1”的本地记录了。 (“isDeleted=1”)。
希望对你有帮助!
关于ios - Swift:使用 Realm 重新连接互联网时,如何将 iPhone 中的本地数据与后端服务器同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42922189/