Latest 1.0.5
Homepage https://github.com/yuanyuan100/DataDriving
License MIT
Platforms ios 8.0, requires ARC
Authors

微信:quanquan_pyy

背景

在MVC下,数据间的通信需要写大量的回调,例如block,delegate,导致数据的流动方向不确定性。APP中大量的bug也是因为数据的不确定性造成的,解决相应bug需要耗费精力定位数据出错的地方。使用DataDriving可以节省大量写回调的代码,以及更加容易确定数据的流动,只需要确定是什么事件导致数据发生改变,以及快速的查找与之绑定的viewModel或者UI控件。

原理

流程图

DataDriving分为两个部分
  • 网络

    给Model添加分类,分类中添加网络模块绑定的属性(数据),当属性(数据)发生改变的时候,则调用实现了相应协议的代理,在协议方法中处理网络请求。待请求成功则返回数据给model,model则解析数据并且赋值给响应属性.在解析数据赋值model属性中,提供了默认解析方案,以及在每个model中可以重写解析方案。

  • ViewModel

    viewmodel原理图

    将viewmodel(或者View控件)与model的响应属性(数据)绑定,也就是没个model都维护一个字典,字典<KVO承载类:唯一识别>,每绑定一组,则初始化两个KVO承载类,并添加到字典中,KVO承载类观察变化,若发生变化则通过KVO给响应的属性赋值(双向)

示例

导入

#import "DataDrivingHeader.h"

或者

#import "NSObject+DDNet.h"
#import "NSObject+DDView.h"
#import "DDNetParse.h"

导入方案

1.直接导入项目

将source拖入到你的项目中

2.cocoapods导入项目

pod ‘DataDriving’

注意事项

"DDNetParse"类必须实现分类, 并且重写如下方法,提供默认的json转model。

+ (void)dd_defaultParse:(id)model json:(id)json;

License

MIT

Latest podspec

{
    "name": "DataDriving",
    "version": "1.0.5",
    "summary": "data driving develope",
    "description": "data driving develope, so developer can write less code, reduce errors.",
    "homepage": "https://github.com/yuanyuan100/DataDriving",
    "license": "MIT",
    "authors": {
        "pengyy": "[email protected]"
    },
    "platforms": {
        "ios": "8.0"
    },
    "source": {
        "git": "https://github.com/yuanyuan100/DataDriving.git",
        "tag": "1.0.5"
    },
    "source_files": "DataDrivingDemo/Source/*.{h,m}",
    "public_header_files": "DataDrivingDemo/Source/*.{h}",
    "requires_arc": true
}

Pin It on Pinterest

Share This