Skip to content

AbooJan/AJDevKit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AJDevKit

个人集成开发框架


pod 依赖包

功能 名称 版本
JSON 解析库 MJExtension 3.0.10
基于AFNetworking的文件下载库 AFDownloadRequestOperation 2.0.1
网络请求库 AFNetworking 2.6.3
来自YYKit的分类 YYCategories 0.9.3
网络图片处理库 SDWebImage 3.7.5
键盘事件处理库 IQKeyboardManager 3.3.4
空内容处理库 DZNEmptyDataSet 1.7.3
正则表达式处理库 RegexKitLite 4.0
Facebook 动画库 pop 1.0.8
Autolayout封装库 Masonry 0.6.3
NSNotification封装库 GLPubSub 1.0.1
AOP处理库 MOAspects 2.1.0
AppStore评分封装库 iRate 1.11.4
多图片显示库 MWPhotoBrowser 2.1.1
系统图片选择库 MLSelectPhoto 1.2.1
上拉下拉刷新库 MJRefresh 3.1.0
新版本初始化处理库 MTMigration 0.0.5
非关系型数据库 Realm 0.97.1
具有正则匹配的UITextField TSValidatedTextField 1.0.0

项目结构

  • Controller : 项目中的控制器
  • Model : 数据模型
  • Network : AFNetworking框架封装
  • View : 常用视图控件封装
  • Tools : 常用工具类
  • Category : 常用分类
  • Library : 第三方框架、SDK包等
  • Resource : 项目中资源,比如https证书、文件等,对于png格式图片放 Assets.xcassets

关于网络框架

项目中使用的网络框架是基于YTKNetowrkMJExtension 封装,将原来 YTKNetowrk 中的请求参数和返回JSON解析交给了 MJExtension 框架处理。

YTKNetowrk框架基础教程

YTKNetowrk框架高级教程


  • 所有请求数据bean必须继承自 RequestBeanBase
  • 所有返回数据结果Bean必须继承自 ResponseBeanBase
  • 所有请求数据Bean命名规则:RequestBean + 功能名称。 例如登录请求数据Bean:RequestBeanLogin
  • 所有返回数据结果Bean命名必须与请求数据Bean命名一致,只是将 RequestBean 换成 ResponseBean。 例如登录结果数据Bean:ResponseBeanLogin

关于数据库

  • 所有需要写入数据库的类需要继承自:AJDBObject 。 并且必须要实现方法: primaryKey,用来定义主键。

  • 所有数据库事务操作通过 AJDBManager 类。接口有:

/**
 *  写入一条数据
 *
 *  @param obj 目标数据
 */
+ (void)writeObj:(__kindof AJDBObject *)obj;

/**
 *  批量写入
 *
 *  @param objs 数组
 */
+ (void)writeObjArray:(NSArray<__kindof AJDBObject *> *)objs;

/**
 *  更新一条数据,更新数据必须在block中执行
 *
 *  @param updateBlock 在block中更新数据
 */
+ (void)updateObj:(void (^)())updateBlock;

/**
 *  在数据库中删除目标数据
 *
 *  @param obj 目标数据
 */
+ (void)deleteObj:(__kindof AJDBObject *)obj;

/**
 *  查询目标数据模型的所有存储数据
 *
 *  @param clazz 需要查询的目标类
 *
 *  @return 数据库中存储的所有数据
 */
+ (NSArray<__kindof AJDBObject *> *)queryAllObj:(Class)clazz;

/**
 *  根据断言条件查询目标数据
 *
 *  @param predicate 查询条件
 *  @param clazz     需要查询的目标类
 *
 *  @return 查询结果
 */
+ (NSArray<__kindof AJDBObject *> *)queryObjWithPredicate:(NSPredicate *)predicate targetClass:(Class)clazz;

/**
 *  根据断言条件查询数据,并进行排序
 *
 *  @param predicate  查询条件
 *  @param clazz      需要查询的类
 *  @param sortFilter 排序配置
 *
 *  @return 查询结果
 */
+ (NSArray<__kindof AJDBObject *> *)queryObjWithPredicate:(NSPredicate *)predicate sortFilter:(AJSortFilter *)sortFilter targetClass:(Class)clazz;

/**
 *  根据主键查询目标数据
 *
 *  @param primaryKey 主键值
 *  @param clazz      需要查询的类
 *
 *  @return 查询结果
 */
+ (__kindof AJDBObject *)queryObjWithPrimaryKeyValue:(id)primaryKey targetClass:(Class)clazz;

/**
 *  清空数据库
 */
+ (void)clear;
  • 对应条件查询接口,可以根据断言条件语句查询,更多用法可以参考苹果官方文档: NSPredicate

  • 对于一个数据模型中包含有另一个模型个数组,定义方法如下:

1.在数组包含的那个模型里面添加宏定义: RLM_ARRAY_TYPE(ClassName)
2.在包含数组的那个模型里面这样定义数组:@property RLMArray<ObjectType *><ObjectType> *arrayOfObjectTypes 
3.更多详细用法可以参考示例程序