咱們手動建立一個landmark.db 文件,其包含一個landmark表。表內容以下圖 git
csv文件github
id,name,imageName
1001,Turtle Rock,turtlerock
1002,Silver Salmon Creek,silversalmoncreek
1003,Chilkoot Trail,chilkoottrail
1004,St. Mary Lake,stmarylake
1005,Twin Lake,twinlake
複製代碼
SQLiteBbase.swift
SQLiteDB.swift
SQLTable
複製代碼
let db = SQLiteDB.shared
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
db.DB_NAME="landmarkdemo.db"
_ = db.open(copyFile:true)
return true
}
複製代碼
static func customTables() ->String {
return "landmark"
}
複製代碼
if you want to use class name as table name ,you need use the following code數據庫
static func customTables() ->String {
return ""
}
複製代碼
class codeswift
import Foundation
import SwiftUI
class SQLandmark: SQLTable {
var id = -1
var name = ""
var imageName = ""
override var description:String {
return "id: \(id), name: \(name)"
}
static func customTables() ->String {
return "landmark"
}
}
extension SQLandmark {
var image: Image {
ImageStore.shared.image(name: imageName)
}
}
複製代碼
四、 create data.swift to init databash
import Foundation
import SwiftUI
let sqLandmarkData: [SQLandmark] = SQLandmark.rows(order:"id ASC")
複製代碼
五、 create UI by SwiftUIapp
import SwiftUI
struct ListSqliteView: View {
var body: some View {
NavigationView {
List{
ForEach(sqLandmarkData,id:\.self){ item in
//Text(item.name)
SQLMRow(landmark: item)
}
.navigationBarTitle(Text("Landmarks"))
}
}
}
}
複製代碼
import SwiftUI
struct SQLMRow: View {
var landmark: SQLandmark
var body: some View {
HStack {
landmark.image
.resizable()
.frame(width: 50, height: 50)
Text(landmark.name)
Spacer()
}
}
}
複製代碼