美文网首页
iOS本地数据同步方案 DataSynchronized

iOS本地数据同步方案 DataSynchronized

作者: piupiu啊piupiu | 来源:发表于2019-08-12 15:31 被阅读0次

    DataSynchronized

    a solution for iOS data synchronization

    iOS开发本地数据同步的解决方案

    What for

    实现本地数据双向绑定,修改一处数据,其他数据自动同步的功能。主要解决有数据同步需求但采用Notification不易于开发和维护,重新拉取网络数据不方便(比如有分页)且有延时的问题.

    Featured

    • 一行代码调用,数据双向绑定,一处修改,其他绑定数据自动同步
    • 内存占用小,绑定耗时短
    • 采用kvo实现,但调用者无需关心内存以及监听的释放
    • 内存依赖于绑定的model,model dealloc时自动释放内存和监听移除
    • 数据路径加载采用kvc实现,支持多级路径
    • 支持同种数据绑定,不同种数据映射绑定

    How To Use

    • clone并将DataSync文件夹拖入项目

    • 在需要绑定数据处import "DataSynchronized.h"

    • ObjC调用

      • 同种数据类型
      //在获取到数据后进行数据源绑定,如果有多个字段用逗号间隔,支持多级路径
          __weak typeof(self)weakSelf = self;
          [_data addDataSynchronizedKeyPath:@"isFollow,myName,otherModel.otherName" IDPath:@"myID" onChange:^(MyModel *  _Nonnull model) {
              //数据改变回调,在此处执行UI操作
              [weakSelf.tableView reloadData];
          }];
          return _data;
      
      • 不同数据类型
          /*
           把data绑定到MyModel类上
           data.otherName与MyModel.myName绑定
           将data.othrID作为绑定的改变标识符
           */
          [_data bindingDataSynchronizedTo:MyModel.class keyPaths:@{@"myName":@"otherName"} IDPath:@"otherID" onChange:^(OtherModel * _Nonnull model) {
              //数据改变回调,在此处执行UI操作
              weakSelf.textField.text = model.otherName;
          }];
          return _data;
      
    • Swift调用

      • 由于用到kvc和kvo所以在swift上使用稍微麻烦,需要在model每个属性前加上@objc dynamic
      class MyModel: NSObject {
        @objc dynamic var myID : String?
        @objc dynamic var myName : String?
      }
      
      • 手动引入文件需要桥接,然后正常使用
      array.addDataSynchronizedKeyPath("myName", idPath: "myID") { (model) in
        let myModel = model as! MyModel
        print(myModel.myName!,myModel.myID!)
      }
      
    dataSyncGif.gif

    Profile

    内存

    该库在为每个绑定数据生成一个内存管理对象:DataSynchronizedManager和一个数据同步Info:DataSyncInfo 每个大小为48bytes,对10000条数据添加绑定理论上额外消耗内存936KB

    memory_profile

    耗时

    time profile环境为iPhone5s (iOS12.0)
    5次同时为10000条数据进行绑定耗时数据

    time_profile

    Support

    after iOS 6.0

    下载地址

    https://github.com/piuSora/DataSynchronized

    More

    有bug或者建议,欢迎issue、pr我

    相关文章

      网友评论

          本文标题:iOS本地数据同步方案 DataSynchronized

          本文链接:https://www.haomeiwen.com/subject/uueujctx.html