sqlite中的约束问题

时间:2013-03-19 12:28:06

标签: ios sqlite

我在sqlite中创建数据库我创建了一个约束notnull和unique的新数据库并将其保存到我的应用程序的地方然后我从我的应用程序添加东西我在库,应用程序支持/.../中检查它们。 ... / ...当我检查刚刚创建的数据库时,那么这个数据库没有约束,它接受相同的数据。

为什么会这样?

如何使用Constraints创建这个数据库,就像我在创建应用程序数据库时创建的一样

是的,我尝试删除数据库并重新制作

plz建议

1 个答案:

答案 0 :(得分:1)

两个问题中的一个通常会导致这种行为(您正在更新数据库,而您没有看到它传播到应用程序):

  1. 捆绑包中的数据库未获得更新。您可以通过在模拟器上运行应用程序,打开捆绑包(转到Finder中的应用程序,〜/ Library / Application Support / iPhone Simulator / ...,然后选择应用程序本身并选择“显示包装内容”)和检查来检查直接在该位置的数据库。最重要的是,对于在Xcode本身之外更改的文件,Xcode有时不会正确更新软件包。通过从Xcode的“产品”菜单中选择“清除”,然后重建并重新安装应用程序来解决此问题。

  2. 应用程序正在加载的数据库不是数据包中版本的副本。听起来这不是你的问题,但是很多第一次开发人员会将数据库从bundle复制到Documents文件夹(如果文件还没有),忽略了当你再次安装应用程序时,内容保留Documents文件夹,因此您仍然可以使用旧版本。只需卸载应用程序或重置模拟器,如果您尝试解决此问题以进行测试。

    从长远来看,应用程序本身需要一些逻辑来查找数据库的版本号(我在Documents文件夹中创建一个带有此信息的“配置”表),并将其与应用程序预期的版本进行比较查找,如果不同,请升级Documents文件夹中的数据库。

  3. 最重要的是,检查所有三个数据库(项目目录,软件包和应用程序的Documents文件夹)以查看丢失数据库更改的步骤非常有用。