sqlite系列(2)使用FMDB保存数据swift
来源:互联网 发布:有线路由器 知乎 编辑:程序博客网 时间:2024/05/23 13:21
1.创建一个数据库的工具类
import UIKitimport FMDBclass XBDataManger: NSObject { //单例 static let shareInstance : XBDataManger = XBDataManger() //创建一个队列(线程安全的队列) var queue : FMDatabaseQueue? var db : FMDatabase?
//打开数据库
func openDB() { let path = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! let filePath = (path as NSString).stringByAppendingPathComponent("status.db") //print(filePath) queue = FMDatabaseQueue(path: filePath) //创建表 createTable() } private func createTable(){ let sql = "CREATE TABLE 'T_status' ( 'status' text,'statusid' integer NOT NULL,'userid' integer,PRIMARY KEY('statusid'))" queue?.inDatabase({ (db) -> Void in //执行代码 db.executeUpdate(sql, withArgumentsInArray: nil) }) } }
func saveData(array : [[String : NSObject]]) { let sql = "insert into T_status (statusId,status,userId) VALUES (?,?,?)" //遍历去取得数据 for dic in array { let statusId = dic["idstr"] //把字典转换为字符串 先转换成data通过<span style="font-family: Arial, Helvetica, sans-serif;">NSJSONSerialization.dataWithJSONObject</span><span style="font-family: Arial, Helvetica, sans-serif;">来实现</span> let data = try! NSJSONSerialization.dataWithJSONObject(dic, options: NSJSONWritingOptions(rawValue: 0)) let str = NSString(data: data, encoding: NSUTF8StringEncoding) //插入数据 支持事务 XBDataManger.shareInstance.queue?.inTransaction({ (db, rollback) -> Void in if db.executeUpdate(sql, withArgumentsInArray: [statusId!,str!,XBUserViewModel.shareInstance.usermodel!.uid!]) { print("插入成功!") } else { print("插入失败!") } }) } }
3.加载数据库中数据
主要步骤 : 拼接sql 执行sql 遍历结果集合 字典转模型
func loadCacheStatus(since_id : Int,max_id : Int,finish : ([[String : NSObject]])->()) { //根据sinceId he max_id 来进行 sql语句的拼接 var sql = "SELECT statusId,status FROM T_status \n" + "WHERE userId = '\(XBUserViewModel.shareInstance.usermodel!.uid!)'\n" if(since_id > 0) { sql += "AND statusId > \(since_id) \n" } else if(max_id > 0) { sql += "AND statusId < \(since_id) \n" } sql += "ORDER BY statusId DESC LIMIT 20" //print(sql) //查询操作 XBDataManger.shareInstance.queue?.inTransaction({ (db, _) -> Void in let result = db.executeQuery(sql, withArgumentsInArray: nil) var array = [[String : NSObject]]() while result.next() { let str = result.stringForColumn("status") //通过字符串来转换成字典 let data = str.dataUsingEncoding(NSUTF8StringEncoding) //转换成字典 let dic = try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions(rawValue: 0)) array.append(dic as! [String : NSObject]) } //完成回调 finish(array) }) }4. 去网络加载数据接口
func loadData(since_id : Int = 0,max_id : Int = 0,success : (count : Int)->(),fail : (error : NSError)->()) {
<span style="white-space:pre"></span>//先去数据库加载,然后再去网络中加载数据 self.loadCacheStatus(since_id, max_id: max_id) { (dataArray) -> () in
<span style="white-space:pre"></span> if dataArray.count > 0 { //遍历字典转模型 for dic in dataArray { let statu = XBStatus(dic: dic) self.StatusArray?.append(statu) }
success(count: -1) } else { //去网络上加载数据 } } }
0 0
- sqlite系列(2)使用FMDB保存数据swift
- Swift使用FMDB操作SQLite
- 使用Sqlite保存数据
- sqlite第三方类库:FMDB使用---2
- sqlite 操作(使用FMDB)
- IOS Sqlite使用FMDB
- Android使用SQLite保存数据
- FMDB(用SQLite存数据)
- ios开发学习笔记--数据持久化之数据库(SQLite.swift)和FMDB
- sqlite第三方类库:FMDB使用
- sqlite第三方类库:FMDB使用
- Sqlite第三方类库:FMDB使用
- 【iOS】使用SQLite与FMDB
- sqlite第三方类库:FMDB使用
- Sqlite第三方类库:FMDB使用
- sqlite第三方类库:FMDB使用
- sqlite第三方类库:FMDB使用
- sqlite第三方类库:FMDB使用
- hdu3336(kmp+dp)
- 协方差的意义和计算公式
- struct option 的使用
- 用于操作基本类型数据的流对象
- model 中的selectedRows()函数
- sqlite系列(2)使用FMDB保存数据swift
- OnScrollListener()
- CentOS 6.6 安装 nginx
- struts2标签笔记
- alembicTool_alembicExport
- unity安卓应用名称多语言本地化
- 自定义ViewPagerIndicator标题栏标题文字颜色
- securtCRT,使用linux命令sz
- 地址转换函数