gpt4 book ai didi

ios - Swift:使用 Realm 重新连接互联网时,如何将 iPhone 中的本地数据与后端服务器同步?

转载 作者:行者123 更新时间:2023-11-30 12:35:30 27 4
gpt4 key购买 nike

我目前在我们的 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com