前言
GYDataCenter 是一个 SQLite 数据库框架,提供了一套简单易用的面向对象的数据操作接口,同时保留了 SQL 查询的灵活性。GYDataCenter 简单易上手,相对于 CoreData,GYDataCenter 的学习成本更低。同时,根据自己的需求,开发者可以更方便地划分数据库,设计数据库表,数据库索引等。
OC使用说明请参考官方文档,在这里我们只讨论Swift下使用GYDataCenter。
pod版本
为了兼容FMDB,应把FMDB版本置为2.6.2,最新的2.7.2会变异报错。
- pod ‘GYDataCenter’
- pod ‘FMDB’, ‘~> 2.6.2’ # 为了兼容GYDataCenter
快速上手
创建模型类继承于GYModelObject,然后实现GYModelObjectProtocol的代理方法即可。由于在Swift项目中写相关代码时不会很友好的出现提示,所以这里必须手写代码。
1 | // 示例代码 |
然后我们在定义模型属性的时候需要加上@objc dynamic关键字,因为在GYDataCenter中使用到了KVO,属性会动态派发,然而我们知道Swift是静态语言,如果要像Objective-C使用运行时特性或者动态替换方法、属性的话,需要加上dynamic关键字,因为’dynamic’ must also be ‘@objc’,所以dynamic前面需要再加上@objc关键字。
1 | class ExampleModel: GYModelObject { |
增删改查
使用sql语句进行增删改查,方法同OC,参考官方文档
realm & WCDB
使用realm时,继承realm的模型基类Object,其属性也要添加@objc dynamic关键字。
1 | class Person: Object { |
使用微信的数据库WCDB时,由于目前最新版Xcode9.3和Swift4.1的改动,WCDB在Xcode9.3中编译报错,这里不做相关讨论。等苹果大大把这个问题修复后,再尝试WCDB。
It’s said that Swift 4.1 is source compatible to 4.0, which means that developers can recompile the code without any changes.
However, not.