我在sqlite中创建数据库我创建具有约束notnull和唯一的新数据库并将其保存到我的应用程序的位置然后我从我的应用程序添加东西并在库中检查它们,应用程序支持/.../...。 /...当我检查刚刚在那里创建的数据库时,该数据库没有约束并且它接受相同的数据。
为什么会这样?
我如何使用约束来制作这个数据库,就像我在制作应用程序数据库时创建的一样
是的,我已经尝试删除数据库并再次制作
请提出一些建议
两个问题之一通常会导致这种行为(您正在更新数据库并且您没有看到它传播到应用程序):
捆绑包中的数据库未更新。您可以通过在模拟器上运行应用程序、打开捆绑包(转到 Finder 中的应用程序、~/Library/Application Support/iPhone Simulator/...,然后选择应用程序本身并选择“显示包内容”)并检查数据库直接在那个位置。最重要的是,Xcode 有时不会为在 Xcode 本身之外更改的文件正确更新捆绑包。这可以通过从 Xcode 的“产品”菜单中选择“清洁”,然后重新构建并重新安装应用程序来解决。
应用程序正在加载的数据库不是包中版本的副本。听起来这不是您的问题,但是Documents
如果文件不存在,许多第一次开发人员会将 db 从捆绑包复制到文件夹,而忽略了当您再次安装应用程序时,Documents
文件夹的内容会被保留,因此您仍然会在那里拥有旧版本。如果您出于测试目的尝试解决此问题,只需卸载应用程序或重置模拟器即可。
从长远来看,应用程序本身需要一些逻辑来查找Documents
文件夹中数据库的版本号(我使用此信息创建一个“配置”表),将其与应用程序预期找到的版本进行比较,如果不同,则升级Documents
文件夹中的数据库。
最重要的是,检查所有三个数据库(项目目录、捆绑包和应用程序的Documents
文件夹)以查看您在哪个步骤丢失了数据库更改是很有用的。