iOS 数据库工具类分享
iOS 数据库工具类分享
基于 对 FMDB 框架的封装,实现通过模型操作数据库的功能,不需要手写SQL语句,只要传入一个Model,框架会自动将Model内数据保存到指定数据库中, 并且会自动创建数据库,自动创建模型对应的表。
项目地址
功能列表
- 根据 Model 动态建表
- 若 Model 内字段发生变化自动进行表结构迁移
- 传入 Model 自动将 Model 内数据保存到数据库对应的表中
- 传入主键值获取 Model 模型数据
- 大数据保存,传入多个数据模型批量存储
- 多线程支持,多线程操作数据库需要使用 操作队列 进行操作。
使用说明
- 导入
XWSqliteTool
库 - 使需要操作的模型遵循
XWXModelProtocol
协议,并实现+(NSString *)primaryKey
协议方法指定表的主键。
1. 动态建表
//根据模型建表 - (void)testCreateTableFromClass { [XWSqliteModelFMDBTool createTableFromClass:[XWPerson class] callBack:^(BOOL isSuccess) { XCTAssertTrue(isSuccess); }]; }
2. 模型字段改变自动进行表数据迁移
// 模型字段增加更新数据库 - (void)testUpdateModelTable { [XWSqliteModelFMDBTool updateTableFromCls:[XWPerson class] updateSqls:nil callBack:^(BOOL isSuccess) { XCTAssert(isSuccess == 1); }]; }
3. 自动保存一个Model到数据库 (自动创建数据库,自动建表)
// 插入/更新 单条数据模型 - (void)testInsertOneObj { [XWSqliteModelFMDBTool insertOrUpdateDataToSQLiteWithModel:[self demoPerson] isUpdateTable:YES callBack:^(BOOL isSuccess) { XCTAssertTrue(isSuccess); }]; }
4. 自动保存 Model 数组到数据库 (自动创建数据库,自动建表)
// 插入/更新 多条数据模型 - (void)testInsertObjs { [XWSqliteModelFMDBTool insertOrUpdateDataToSQLiteWithModels:[self demoPersons] isUpdateTable:YES callBack:^(BOOL isSuccess) { XCTAssertTrue(isSuccess); }]; }
5.传入主键值获取 Model 模型数据
// 查询 XWPerson 表中 主键 为 4 的模型 - (void)testQuery { [XWSqliteModelFMDBTool objectFromDatabaseWithPrimaryValue:4 modelCls:[XWPerson class] resultCallBack:^(XWPerson *obj) { NSLog(@"name:%@",obj.name); }]; }
6.多线程操作数据库
首先如果项目中需要多线程异步操作数据库,需要将对数据库操作集中管理,使用 dispatch_queue_t
进行统一管理。 例如Demo所示:
// // ViewController.m // XWSqliteToolDemo // // Created by 邱学伟 on 2018/4/8. // Copyright © 2018年 邱学伟. All rights reserved. // #import "ViewController.h" #import "XWSqliteModelFMDBTool.h" #import "XWPerson.h" @interface ViewController () @property (nonatomic, strong) dispatch_queue_t databaseQueue; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.databaseQueue = dispatch_queue_create("com.company.app.database", 0); for (int i = 0; i < 1000; i++) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ XWPerson *stu = [[XWPerson alloc] init]; stu.name = [NSString stringWithFormat:@"极客学伟_%d",i]; stu.sex = 1; stu.uid = [NSString stringWithFormat:@"%d",i]; stu.height = 188; stu.address = @"北京回龙观"; dispatch_sync(self.databaseQueue, ^{ // do your database activity here [XWSqliteModelFMDBTool insertOrUpdateDataToSQLiteWithModel:stu isUpdateTable:YES callBack:^(BOOL isSuccess) { NSLog(@"保存成功 %@, 线程 %@",stu.name,[NSThread currentThread]); }]; }); }); } } @end
原文地址https://blog.csdn.net/qiuxuewei2012/article/details/80282784
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
常见浏览器User-Agent大全
下面是工作中需要用到的常见浏览器User-Agent字符串的收集整理,不断更新中。 OperaMozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60Opera/8.0 (Windows NT 5.1; U; en)Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50 FirefoxMozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/2010...
- 下一篇
Android--屏幕适配通用
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/80292218 使用步骤: 1、以某一widthDP为基准,生成所有设备对应的dimens.xml文件 <?xml version="1.0" encoding="UTF-8"?> <resources> <!-- Your custom size defind by references, can be writted in anywhere, any module, any values/*.xml, for example: --> <dimen name="common_margin">@dimen/dp_15</dimen> <!-- dp and sp values, must be defind in this file! --> <!-- view size,you can add if there is no one --> <dime...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块
- Linux系统CentOS6、CentOS7手动修改IP地址