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

标签 ios swift realm

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

相关文章:

Swift XCTAssertEqual (Float) 直接传递 getter 时失败

ios - 类似类型: Cannot specialize a non-generic definition

ios - glGenTextures 在 glDeleteTextures 之后很快返回一个未定义的纹理

iphone - Facebook 注销无法通过 Facebook Connect iPhone API 正常工作

ios - 在 OutSide 按钮上获取 TableView Cell IndexPath 时出现错误

ios - 如何在 Swift 中获取硬件详细信息?

swift - 无法在 Swift 2 中将 AnyObject(可选)转换为字符串

swift - 如何在 MKAnnotation CalloutAccessoryView 中显示所选图像,swift 2.2

ios - UICollectionView 警告

ios - 为什么我的 SwiftUI 列表用相同的项目填充了 4 次而不是所有 4 个项目?