gpt4 book ai didi

ios - 我可以对现有的 sqlite 数据库使用 dbaccess 吗?

转载 作者:搜寻专家 更新时间:2023-10-31 19:38:54 24 4
gpt4 key购买 nike

我的问题是如何将 dbaccess 框架与现有的 sqlite 数据库一起使用?我的设备的文档文件夹中有“test.sqlite”文件。我什至将它重命名为“test.db”。当我尝试提交我的类 Worker 的对象时,什么也没有发生(我没有收到 databaseError(error: DBError!) 方法的任何错误)。

这是 Worker.swift 的样子:

@objc(Worker)

class Worker: DBObject {
dynamic var lastName: NSString?
}

这是 AppDelegate.swift 的样子:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
DBAccess.setDelegate(self)
DBAccess.openDatabaseNamed("test")

var w = Worker.new()
w.lastName = "WorkerName"
w.commit()

return true
}

最佳答案

是的,您应该可以,但会有一些注意事项。所以 DBAccess 总是必须有一个 ID 列,所以它会在您现有的表中创建一个 ID 列。它还将为现有记录生成自己的 PK 值。

您的项目未保留的原因可能在于您需要调用 persistSynthesizedProperties,在委托(delegate)上将其设置为 true。

因为您只有一个字段,所以我可以理解为什么这看起来什么也没做。因为当我们换掉 swift 类中的 getter/setter 方法时,它需要不同的方法。这些方法与 objc 类具有需要持久化的综合属性时的方法相同。

因此,当调用提交时,没有列出要保留的列,因此它会发出一个没有更改的更新,这自然会被优化为空操作。

我们希望及时取消这种委托(delegate)方法,但目前我们无法在 obj-c 中确定一个类是使用哪种语言实现的。如果我们能找到一种方法,那么我们就可以消除这个相当烦人和奇怪的怪癖。

谢谢阿德里安

关于ios - 我可以对现有的 sqlite 数据库使用 dbaccess 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32057687/

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