SwiftUI 使用Sqlite数据库简明教程(2020年教程)

数据介绍

咱们手动建立一个landmark.db 文件,其包含一个landmark表。表内容以下图 git

SwiftUI 中级之List显示Sqlite数据库内容

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

复制代码

属性

  • 纯Swift代码
  • 能够自定义table名称
  • 使用SwiftUI进行显示

使用方法


  1. 如何加入到你到项目 (1) copy file to your project
SQLiteBbase.swift
SQLiteDB.swift
SQLTable

复制代码
  1. 初始化 add init code to AppDelegate.swfit
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
    }
复制代码
  1. create class if you want to custom table name,you can set custom name with the following code
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()
        }
    }
}
复制代码

效果

SwiftUI 中级之List显示Sqlite数据库内容

项目所有代码

github.com/zhishidapan…ide

更多SwiftUI教程和代码关注专栏

相关文章
相关标签/搜索