Latest 1.1
Homepage https://github.com/sinsmin/sqlitedb
License MIT (SqliteDb)
Platforms ios 8.0, requires ARC
Authors

简单、轻量级的对象持久化库

不支持的属性类型

id类型。

支持的属性类型

NSArray(NSMutableArray)NSDictionary(NSMutableDictionary)NSSet(NSMutableSet)NSOrderedSet(NSMutableOrderedSet)NSMapTableNSHashTableNSData(NSMutableData)NSDateNSURLNSString(NSMutableString)NSValueNSNumber(unsigned)char(unsigned)short(unsigned)int(unsigned)long(unsigned)long longBOOLfloatdoubleCGFloatNSTimeIntervalNSIntegerNSUIntegerCGPointCGVectorCGSizeCGRectCGAffineTransformUIEdgeInsetsUIOffset
所有被NSNumberNSValue支持的数据类型都可以直接支持。其他无法直接支持的类型(自定义对象除外),可以实现NSCoding协议采用归档方式支持。

线程安全

XCConnectionQueue类内部采用GCD串行队列,将数据库操作包装在一个block中。由于所有方法都是使用sync方式调用,所以不要在block中嵌套调用XCConnectionQueue中的方法,以免出现死锁。

对象持久化

需要持久化的对象实现XCSqliteModel协议中的方法。xc_autoincrementKeyxc_primaryKeys只能使用其中一个方法,优先使用xc_autoincrementKey。如果需要指定集合中的元素类型,实现xc_classInArray方法;如果不需要,实现xc_transientColumns方法,过滤该属性。

使用

简单使用

调用NSObject+XCPersistence.h中提供的分类方法来操作数据库,目前只支持单表操作。如果需要更复杂的操作,请使用XCConnectionQueue类提供的方法。
分类中默认使用defaultQueue方法进行数据库操作。如果需要自定义数据库路径,可以先使用defaultQueueWithPath:enableDebugLog:方法初始化默认的共享实例;之后在使用defaultQueue获取默认的共享实例。

XCConnectionQueue

1、close关闭数据库链接
2、executeInQueue:在block使用connection进行数据库操作
3、transactionInQueue:deferredTransactionInQueue:开启事务操作,rollback参数控制是否回滚事务。

XCSqliteConnection

1、executeStatement执行无参数的简单SQL操作。
2、execute:开头的方法支持代占位符参数的SQL操作,防止SQL注入。
3、executeInsert执行插入操作,并返回自增的Id,如果支持;失败返回0。
4、query:开头的方法执行查询操作,并返回查询结果。
5、lastExecuteError方法可以获取最近一次操作数据库的错误;在NSError对象的userinfo参数中,通过XCExecuteSQLKey常量获取执行出错的SQL语句。
在方法中,带有values的参数,参数用?代替;带有parameter的参数,参数用:参数名称代替;带有可变参数的,参数使用?代替。

数据迁移

xc_setupTableStructure被调用时,内部会自动进行数据表结构与模型匹配。

Latest podspec

{
    "name": "SqliteDb",
    "version": "1.1",
    "summary": "Saving objects to the sqlite database automatically.",
    "homepage": "https://github.com/sinsmin/sqlitedb",
    "license": "MIT (SqliteDb)",
    "authors": {
        "sinsmin": "[email protected]"
    },
    "platforms": {
        "ios": "8.0"
    },
    "source": {
        "git": "https://github.com/sinsmin/sqlitedb.git",
        "tag": "1.1"
    },
    "source_files": "SqliteDb/Classes/**/*.{h,m}",
    "public_header_files": "SqliteDb/Classes/**/*.h",
    "libraries": "sqlite3.0",
    "requires_arc": true
}

Pin It on Pinterest

Share This