TestsTested | ✗ |
LangLanguage | Obj-CObjective C |
License | MIT |
ReleasedLast Release | Mar 2018 |
Maintained by sinsmin.
简单、轻量级的对象持久化库
id
类型。
NSArray(NSMutableArray)
、NSDictionary(NSMutableDictionary)
、NSSet(NSMutableSet)
、NSOrderedSet(NSMutableOrderedSet)
、NSMapTable
、NSHashTable
、NSData(NSMutableData)
、NSDate
、NSURL
、NSString(NSMutableString)
、NSValue
、NSNumber
、(unsigned)char
、(unsigned)short
、(unsigned)int
、(unsigned)long
、(unsigned)long long
、BOOL
、float
、double
、CGFloat
、NSTimeInterval
、NSInteger
、NSUInteger
、CGPoint
、CGVector
、CGSize
、CGRect
、CGAffineTransform
、UIEdgeInsets
、UIOffset
...
所有被NSNumber
、NSValue
支持的数据类型都可以直接支持。其他无法直接支持的类型(自定义对象除外),可以实现NSCoding
协议采用归档方式支持。
XCConnectionQueue
类内部采用GCD串行队列,将数据库操作包装在一个block中。由于所有方法都是使用sync
方式调用,所以不要在block中嵌套调用XCConnectionQueue中的方法,以免出现死锁。
需要持久化的对象实现XCSqliteModel
协议中的方法。如果需要持久化集合属性中的元素,必须实现xc_classInArray
方法,指定集合中的元素类型。如果不需要,必须实现xc_transientColumns
方法,过滤该属性。
调用NSObject+XCModelStorage.h
中提供的分类方法来操作数据库,只支持单表操作。如果需要更复杂的操作,请使用XCConnectionQueue
类提供的方法。
分类中默认使用defaultQueue
方法进行数据库操作。如果需要自定义数据库路径,可以先使用defaultQueueWithPath:enableDebugLog:
方法初始化默认的共享实例;之后在使用defaultQueue
获取默认的共享实例。
1、close
关闭数据库链接
2、executeInQueue:
在block使用connection进行数据库操作
3、transactionInQueue:
和deferredTransactionInQueue:
开启事务操作,rollback
参数控制是否回滚事务。
1、executeStatement
执行无参数的简单SQL操作。
2、execute:
开头的方法支持代占位符参数的SQL操作,防止SQL注入。
3、executeInsert
执行插入操作,并返回自增的Id,如果支持;失败返回0。
4、query:
开头的方法执行查询操作,并返回查询结果。
5、lastExecuteError
方法可以获取最近一次操作数据库的错误;在NSError对象的userinfo参数中,通过XCExecuteSQLKey
常量获取执行出错的SQL语句。
在方法中,带有values的参数,参数用?
代替;带有parameter的参数,参数用:参数名称
代替;带有可变参数的,参数使用?
代替。
当有持久化对象的属性与原来的属性不一致时,可以调用对象的分类方法xc_migration
来进行数据迁移,这个操作会阻塞当前调用线程直到执行结束。操作完成后,原有的数据不会变动,不需要的列会被删除,新的列会被添加(数据库中默认的值为NULL)。