iOS FMDB 在swift4 0中使用

2021-08-11 14:17:55 字數 2957 閱讀 3387

1.封裝的乙個不用寫sqlite語句的資料庫類,使用的是swift4.0,運用了runtime機制獲取屬性名,和屬性值,通過模型直接呼叫方法就可以進行資料庫操作,先看看效果圖

2.先對封裝的類進行簡單的介紹

2-1. 對qypsqlitemanager內**

import foundation

import fmdb

class

qypsqlitemanager

}

2-2. qypobject+extension

import foundation

extension nsobject

sql += ");"

// 2. 執行 sql - fmdb 的內部佇列,序列佇列,同步執行

// 可以保證同一時間,只有乙個任務運算元據庫,從而保證資料庫的讀寫安全!

qypsqlitemanager.shared.queue.indatabase else }}

/// 查詢資料表是否存在

func tableviewi***ists() -> bool

while rs.next()

}if tempcount == 0

return

true}}

2-3 *這裡是我們需要使用的介面qypdbapi類

import foundation

extension nsobject

key.remove(at:key.index(before: key.endindex))

values.remove(at:values.index(before: values.endindex))

insertsql += key + ")" + values + ");"

let valuesarr = self.getvalueofproperty()

qypsqlitemanager.shared.queue.intransaction else}}

/// 刪除資料

/// /// - parameter deletstr: "name = 'jacob'"

func delete(deletstr:string)else }}

/// 跟新語句全部模型裡面的資料全部跟新

func updatedata(wherestr:string)

updatesql.remove(at:updatesql.index(before: updatesql.endindex))

updatesql += " where \(wherestr);"

print(updatesql)

qypsqlitemanager.shared.queue.indatabase else }}

/// 表中資料全部查出預設按公升序排列

// fixme:先放在這裡,還未處理的是 order by id desc 別的東西,現在只做到了id的降序排列

func selectdata(wherestr:string,order_by:string = "id asc") -> [[string:anyobject]]

selectsql.remove(at:selectsql.index(before: selectsql.endindex))

selectsql += " from \(self.classforcoder) where \(wherestr) order by \(order_by);"

print(selectsql)

var result = [[string: anyobject]]()

qypsqlitemanager.shared.queue.indatabase

while rs.next()

// 在這裡通過執行時給類新增屬性,並且設定屬性值

dic[name] = value

as anyobject}}

}return result}}

2-4…這裡是runtime獲取屬性值,和屬性名

import foundation

extension nsobject

return

true

}/// 獲取屬性值

/// /// - returns: 返回獲取到的屬性值陣列

func getvalueofproperty()->[string]

return values

}///[使用執行時]獲取當前類所有的屬性陣列

func propertylist() -> [string]

var arr = [string]()

for i in

0..//根據下標 獲取屬性

let a = list[i]

//獲取屬性的名稱

let cname = property_getname(a)

let n = string(utf8string:cname)

}// 在這個方法裡面建立資料表.

if tableviewi***ists() == false

return arr}}

4.*同時專案運用了mvvm的使用,基本上和實際專案模式一直,可以值得借鑑

5.介紹結束.完整的**已經提交github位址

要是可以幫到大夥,求點贊,要是**寫的不足,求指教

Swift4 0 基礎部分

翻譯能力有限,如有不對的地方,還請見諒!希望對swift的學習者有所幫助 swift是一門新的程式語言,用於ios,macos,watchos以及tvos系統平台上應用程式的開發。儘管如此,如果有c和objective c開發經驗的話,那麼對於swift的許多部分,你將並不陌生。c和objectiv...

Swift 4 0 巨集定義

swift中並沒有加入巨集系統,c語言使用 define定義的基本常量在匯入swift時被swift編譯自動轉為swfit語言的全域性變數。但複雜的巨集定義不能被swift轉換。swift中類似巨集定義,可以單獨建立乙個類,如const.swift,在此類中宣告一些常量。例如 螢幕的寬 let sc...

Swift 4 0 陣列 Array 學習

定義陣列常量 常量只有讀操作 let array1 int 11,55,5 let array2 11,55,5 定義陣列變數var array int 這是我最喜歡的 var array0 int 10,20,30 初始化並賦值 var array1 int array var array2 ar...