将数据插入领域数据库有进度吗?

2024-03-09

下载 json 字符串后,我的请求数据约为 7MB,这意味着 json 字符串约为 7MB。下载后,我想将数据保存到领域模型对象(表)中,进度如下

(1/7390) 至 (7390/7390) -> (已插入数据/待插入数据总数)

我在我的应用程序中使用 Alamofire 作为 HTTPClient。那么,如何在从服务器下载数据后将有进度的数据插入到我的领域对象模型中?有任何帮助吗,因为我是初学者。

我不会准确地显示数据模型,因此,任何示例都值得赞赏。假设我的 json 字符串是。

{
    {
       name : Smith,
       age : 23,
       address : New York
    },
    {
       name : Adam,
       age : 22,
       address : Maimi
    },
    {
       name : Johnny,
       age : 33,
       address : Las Vegas
    },
    ... about 7392 records
}

假设你有一个这样做的标签。
Ok.
假设你使用MVVM https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel图案也。
Ok.

ViewController 有标签和“观察”(*)ViewModel 属性“进度”
ViewModel 具有属性“进度”

class ViewModel: NSObject {

  dynamic var progress: Int = 0

  func save(object object: Object) {
      do {
          let realm = try Realm()
          try realm.write({ () -> Void in
              // Here your operations on DB 
              self.progress += 1
          })
      } catch let error as NSError {
          ERLog(what: error)
      }
  }
}

这样,当“进度”发生变化时,viewController 就会收到通知,并且您可以更新 UI。

你的 VC 应该有一个像这样的方法,例如由 viewDidLoad 调用:

private func setupObservers() {
   RACObserve(self.viewModel, keyPath: "progress").subscribeNext { (next: AnyObject!) -> Void in
     if let newProgress = next as? Int {
        // Here update label            
     }
   }
}

其中 RACObserve 是一个全局函数:

import Foundation
import ReactiveCocoa

func RACObserve(target: NSObject!, keyPath: String) -> RACSignal  {
    return target.rac_valuesForKeyPath(keyPath, observer: target)
}

(*)您可以使用活性可可 https://github.com/yusefnapora/ReactiveCocoa/tree/de3c9a76666b1bf847f3f50df6a3791035defd9a例如。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将数据插入领域数据库有进度吗? 的相关文章

随机推荐