gpt4 book ai didi

ios - 如何在 swift 中使用现有的 SQLite 数据库?

转载 作者:搜寻专家 更新时间:2023-11-01 05:49:05 25 4
gpt4 key购买 nike

我知道有一些资源可用于此目的,但没有一个能清楚地说明如何正确地做到这一点。

我已经填充了 .sqlite 数据库 (MTrader.db),我想将它连接到我的 swift 项目并将数据库中的数据加载到微调器中。

我试了很多方法都不行。我尝试编辑lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator? AppDelegete.swift 中的方法

if !NSFileManager.defaultManager().fileExistsAtPath(url.path!) {
let sourceSqliteURLs = [NSBundle.mainBundle().URLForResource("MTrader", withExtension: "db")!]

let destSqliteURLs = [self.applicationDocumentsDirectory.URLByAppendingPathComponent("MTrader.db")]

var error:NSError? = nil
for var index = 0; index < sourceSqliteURLs.count; index++ {
NSFileManager.defaultManager().copyItemAtURL(sourceSqliteURLs[index], toURL: destSqliteURLs[index], error: &error)
}
}

由于某些原因,上述代码无法正常工作。我在我的项目中复制了我的数据库文件。那么我的代码是否有任何错误,或者是否有更好的方法来使用我现有的数据库而不创建新数据库并填充它?

最佳答案

首先将 libsqlite3.dylib 添加到您的 Xcode 项目中(在项目设置/构建阶段/将二进制文件与库链接),然后使用类似 fmdb 的东西,它使处理 SQLite 变得容易得多。它是用 Objective-C 编写的,但也可以在 Swift 项目中使用。

然后你可以写一个DatabaseManager类,例如...

import Foundation;

class DatabaseManager {

private let dbFileName = "database.db"
private var database:FMDatabase!

init() {
openDatabase()
}

func openDatabase() {
let resourcePath = NSBundle.mainBundle().resourceURL!.absoluteString
let dbPath = resourcePath?.stringByAppendingPathComponent(dbFileName)
let database = FMDatabase(path: dbPath)

/* Open database read-only. */
if (!database.openWithFlags(1)) {
println("Could not open database at \(dbPath).")
} else {
self.database = database;
}
}

func closeDatabase() {
if (database != nil) {
database.close()
}
}

func query(queryString:String) {
if let db = database, q = db.executeQuery(queryString, withArgumentsInArray: nil) {
while q.next() {
let data = q.stringForColumn("columnName")
// Do whatever here with fetched data, usually add it to an array and return that array
}
}
}
}

关于ios - 如何在 swift 中使用现有的 SQLite 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30847532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com