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

Ios 我可以对现有的sqlite数据库使用dbaccess吗?,ios,swift,dbaccess,Ios,Swift,Dbaccess,我的问题是如何在现有的sqlite数据库中使用dbaccess框架? 我的设备的文档文件夹中有“test.sqlite”文件。我甚至把它重命名为“test.db”。当我尝试提交我的类Worker的对象时,什么也没有发生(我没有在databaseError(error:DBError!)方法中得到任何错误) 这就是Worker.swift的外观: @objc(Worker) class Worker: DBObject { dynamic var lastName: NSString? }

我的问题是如何在现有的sqlite数据库中使用dbaccess框架? 我的设备的文档文件夹中有“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值

项目未持久化的原因可能在于您需要调用PersistSynthesisdProperties,并在代理上将其设置为true

因为您只有一个字段,所以我可以理解为什么这似乎没有任何作用。因为当我们交换swift类中的getter/setter方法时,它需要不同的方法。这些方法与objc类合成需要持久化的属性时的方法相同

因此,当调用commit时,没有列出要持久化的列,因此它会发布一个不做任何更改的更新,这自然也是一个空操作

随着时间的推移,我们希望废除这种委托方法,但目前我们无法在obj-c中计算出类使用什么语言实现。如果我们能找到一种方法,那么我们就可以摆脱这种相当烦人和怪异的怪癖

谢谢
阿德里安

谢谢阿德里安!我试试看。但我还有一个问题。如何将类附加到现有表?我应该使用什么方法?因此,如果我正确理解您的问题,您可以将类命名为与表相同的名称,并为每个列添加属性。应该可以了。我遵循了你给的指南。我向我的类工作者添加了一些属性。我添加了这行代码:DBAccess.setPersistSynthesizedProperties(true)。但它仍然不会将记录保存在现有数据库或新数据库中。可能这里最简单的事情是,如果您可以通过电子邮件向我们发送一个小样本应用程序,您遇到问题的数据库我们将进行查看。您真是太好了。我可以使用什么电子邮件?