EasyIOS 2.3

EasyIOS 2.3

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最后发布2016年11月

zhuchao 维护。



EasyIOS-Swift 版本发布!欢迎 Star、Fork

EasyIOS 是一个基于 Model-View-ViewModel 的新一代开发框架,让应用程序开发更快更容易,用极客的方式构建您的应用。

欢迎大家加入讨论

EasyIOS 以提升开发效率为宗旨

  • 代码分离 -Model-View-ViewModel - 分离 ViewController 中的大量逻辑代码,解决 ViewController 承担过多角色而导致的代码质量低下。增加视图与模型的绑定特性。

  • 自动持久化 -Model to Db – 我再也不想思考如何实现持久化了。在我的想法里,将模型对象直接扔到一个 bucket 里,然后它就能自动地对数据进行存储、缓存、合并以及唯一化。我应当关注于描述对象间的属性和联系,以及我希望它们分组的方式。其他的实现细节都应该是不可见的。

  • 自动 RESTful API –Json to Model- 一旦我给程序发出指令,将一个 API 响应对应到一个数据对象,网络和 JSON 转换应该被自动完成。我只想关注如何将 JSON 中那些项目展示给用户。

  • 有表现力的触发器和响应 -ReactiveCocoa– 我想用源于响应意图(Intent)的语法来描述事件的响应和触发器,我不关心它们间的联系是如何实现的,并且这些联系也不应该在重构时出错。

  • 简洁明了的网络请求 -Action and Request- 对于简单的 GET、POST 请求,可以进行对象化操作,我只想告诉程序链接在哪里,有哪些参数,接下来就自动拉取到想要的数据,顺便把缓存也做齐了,也是极好的。

  • 便捷的 UI 布局 – FLKAutolayout- 更便捷地进行 autolayout 布局,不管你使用 springs & struts 或者 AutoLayout,每种方法都需要你明确相关视图如何排列。你需要花大量的时间编写和修正这些排列,特别是在现在有这么多设备需要适配的情况下。没有什么是自动写好的,UI 布局依赖于对细节的不断调整。推荐开发期间 Debug 工具 FLEX,pod 'FLEX', '~> 1.1.1' 需要手动集成,发布 release 版本时请删除。

  • 友好的线程控制 -GCDObjC-
  • 便捷的正则匹配
  • 富文本的 Label
  • 等等……

MVVM(Model-View-ViewModel)

全新基于 MVVM(Model-View-ViewModel) 编程模式架构,开启 EasyIOS 开发函数式编程新篇章。

EasyIOS 2.0 类似 AngularJs,最核心的是:MVVMORM、模块化、自动化双向数据绑定、等等

喜欢 swift 的同学,同样有 swift 的 2.0 demo RACSwift for EasyIOS,供大家学习。

关于有疑问什么是 MVVM,以及为什么 IOS 开发需要 MVVM 思想编程的,请看文章 用 Model-View-ViewModel 构建 iOS App 有详细介绍。

EasyIOS 2.0 是基于 MVVM 编程思想进行构建的,封装了 Scene, SceneModel, Model,Action 四种模型来对 IOS 进行开发,4 种模型的定义解决了 IOS 开发中 ViewController 承担过多角色而导致的代码质量低下,使结构思路更加清晰。

  • 1. 其中 Scene 就是 ViewController 的子类,仅仅负责界面的展示逻辑
  • 2. Model 数据模型,父类实现了 ORM,可以实现 json、object、sqlite 三者之间的一键转换
  • 3. SceneModel 视图-数据模型,主要负责 视图与模型的绑定工作,其中 binding 的工作交给了 ReactiveCocoa
  • 4. SceneModel 包含 Action 成员,Action 类主要负责网络数据的请求、数据缓存,数据解析工作

如果你有看过 Github 的 Trending Objective-C 榜单,那你肯定是见过 ReactiveCocoa 了, ReactiveCocoa 简称 RAC,就是基于响应式编程思想的 Objective-C 实现,它是 Github 的一个开源项目,你可以在 这里 找到它。

二次封装 AFNetworking,集成到 Action,增加了网络缓存功能,轻松控制是否启用缓存。

采用 ReactiveCocoa 框架,实现响应式编程,减少代码复杂度。

Model 类整合 JsonModel 的类库和 MojoDataBase 类库

整合了很多开源的优秀代码

常用类库:

Action 负责网络数据请求

Model 负责数据存储

SceneModel 负责 SceneModel 的绑定,调用 action 进行数据请求

场景(Scene): 一个视图相当于UIViewController,提供快速集成网络请求和实现下拉刷新及上拉加载的接口。

SceneTableView: 一种TableView,与Scene协作实现下拉刷新和上拉加载的功能。

SceneCollectionView: 一种CollectionView,与Scene协作实现下拉刷新和上拉加载的功能。

安装方法

  • 从CocoaPods导入
  • 将以下内容添加到Podfile中,并运行pod install

    platform :ios, "6.0"
    pod 'EasyIOS', :git=>'https://github.com/zhuchaowe/EasyIOS.git',:tag=>'2.3'
    pod 'EasyIOS-Extention', '~> 1.2'
    
  • 如果您使用Swift,请点击这里

2.3版本更新

  • 修改Model层的实现方式
  • Request中增加了可自定义UserAgent的功能

2.2.3 版本更新

  • 新增URLManager
  • EZNavigationController 默认启用全屏右滑返回
  • 修复Action类缓存策略的bug
  • 修复其他各种小bug,记不清了

2.2.2 版本更新

  • 指定RAC最高版本号为2.4.4
  • Action类POST方法增加缓存功能
  • Request类增加设置http头信息

2.2版本更新

  • 修改Action类中的配置方式:由原来的宏调用改为类方法配置
  • 针对iOS8进行优化
  • 为UIScrollView增加下拉放大效果
  • 新增EZNavigationController类,解决iOS7中快速push容易崩溃的问题
  • 重新实现下拉刷新,与上拉加载完全解耦,支持自定义UI。
  • 新增自适应高度的cell——AutoLayoutCell,以及支持UIScrollView自动布局实现自适应contentSize的功能
  • 智能键盘,防止键盘遮挡输入框
  • 新增强大的XAspect,完美实现代码解耦,再次减轻UIViewController的负担
  • 兼容iOS8的UIAlertController与iOS7的UIActionSheetUIAlertView
  • Action类新增Download下载方法
  • EasyIOS-Extention分离可选的第三方类库
  • 移除了RTLabelEzUILabel
  • 修复部分bug
  • ……

2.1版本更新

  • 感谢各位小伙伴的支持以及不断地提出Issues,清晰地指出了EasyIOS的优化项,本次更新主要针对网络访问Action类
  • 2.1版本移除MKNetWorkKit,基于现有的API重新封装了AFNetworking,并且加入了缓存控制。
  • 利用Action类发起请求的小伙伴可以体验到无缝升级的快感。
  • 同时移除了UIImageView+MKNetWorkKit,替换为更熟悉的SDWebImage,解决了图片闪烁问题。
  • 修复部分循环引用的bug

2.0.3版本更新

  • 紧急修复2.0.2模型层初始化数据为nil的bug
  • 移除EUIGestureRecognizer
  • 增加SHGestureRecognizerBlocks

2.0.2版本更新

  • 新增gcd封装GCDObjC,告别CocoaTouch原生难以记忆的gcd调用方法
  • 新增正则表达式封装RegExCategories,可以轻松地编写正则表达式了
  • 新增缓存处理封装TMCache,方便手动操作数据缓存(MK的自动缓存没有采用TMCache)
  • 模型层升级:MojoDatabase+JsonModel新增自动检测、自动创建数据表,新增查询方法,order by、group by、limit等方法
  • 新增功能教程在Wiki Paper

2.0.1版本更新

  • 修改pod依赖
  • FontIcon从项目中剥离,单独维护
  • 模型层修改:移除Jastor,添加JsonModelMojoDatabase+JsonModel从项目中剥离,单独维护。
  • 增加懒人代码生成工具ModelCoder
  • 移除部分非必要类库,代码整合
  • 本着引导大家编程更easy的原则,增加EasykitFLKAutoLayout

2.0版本更新

  • 架构修改,基于MVVM架构
  • SceneModelScene中剥离出来,并加入响应式编程框架ReactiveCocoa
  • ReactiveCocoa中文使用说明教程 ReactiveCocoa2实战
  • ReactiveCocoa 在GitHub上有开源项目ReactiveCocoa2

1.0.3版本更新

  • 再也不用担心奇怪的图文混排了
  • 新增字体图片支持 资源里的demo 就是一个基于 swifteasyios的字体图片演示,可以用来作为图片字典查阅
  • 可扩展的字体库,只需添加ttfjson文件即可轻松扩展特殊字体
  • 目前支持4种图片字体 FontAwesomeZocial-RegularIoniconsFoundation
  • FontAwesome 4.1 字体库,包含 439 个图标
  • Foundation icons 字体库,包含283 个图标
  • Zocial Contains 字体库,包含99 个图标
  • ionicons 1.5.2 字体库,包含601个图标,大部分是IOS7风格。

image

1.0.2版本更新

  • 修复一些头文件的引用关系,增加了swift头文件支持。
  • 使用swift的开发者需要设置Objective-C Bridging Header${PODS_ROOT}/Headers/EasyIOS/swift-bridge.h
  • 1.0.2版本已发布到CocoaPods。

1.0.1版本更新

  • 1. 新增ORM支持,从此可以实现json、object、sqlite三者之间的一键转换,可以节省很多代码,是不是很酷。

model类整合了Jastor的类库和MojoDataBase类库。

  • 2. 修改了Action类中的post参数,增加了files参数,

因此,action.POST_MSG时现在至少需要3个参数。

  • 3. 借鉴了beeframework的消息通知机制,默默给郭大点个赞。

  • 4. 修复了一个下拉刷新的bug。

  • 5. 提供了一键打开百度地图、苹果地图、google地图、高德地图发起调用的接口,再也不用担心看地图文档了。