咱们手动建立一个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()
}
}
}
复制代码