SQLite数据库在iPhone模拟器中没有刷新

时间:2011-07-06 00:56:04

标签: iphone xcode sqlite load refresh

所以我让SQLite数据库为我的应用程序工作。它从数据库加载文本值,将其复制到数组并在表视图中显示。

我第一次接受它时,周二,周四,周六显示值。然后我使用SQLite管理器插件为firefox修改了数据库(我也使用它来创建它),方法是添加新值。但是,新值不显示,即使我删除像星期六这样的值,同样的旧“星期二,星期四,星期六”也会重新出现。我很困惑。

注意:

  • 我尝试重新启动Xcode甚至计算机lol。
  • 当我在SQLite Manager中修改数据库时,数据库文件的更新时间在Xcode中刷新。
  • 我的数据库管理,就像在教程中一样,发生在AppDelegate。
  • 在appdelegate:(BOOL)应用程序:(UIApplication *)应用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions我在开始时有这段代码

    routines = nil; // Reset array
    database = nil; // not opened yet
    selStmt = nil; // no compiled statement yet
    updStmt = nil; // no compiled statement yet
    

我正在关注本教程并根据我的需要对其进行修改: http://technologyservants.com/index.php?option=com_content&view=article&id=46:shopping-list-an-iphone-sqlite-tutorial

2 个答案:

答案 0 :(得分:5)

如果文档目录中尚不存在数据库,您可能正在将应用程序包中的数据库复制到文档目录中。

下次运行应用程序(使用新数据库)时,检查用户文档目录中是否存在数据库,然后您可能不会再次复制它。您不是在比较db的版本,而只是检查具有该名称的db是否存在。

如果您仍在开发中,一个简单的解决方案就是清除重置模拟器的内容和设置,这将导致您的应用再次复制数据库。

答案 1 :(得分:2)

正如Firoze在第一次加载时所说的那样(我只是略读了教程,所以请原谅我),数据库从包中复制到文档目录中。对于之后的每次启动,都不需要将数据库复制出来,因为它已经存在。

如果您正在使用模拟器并希望更改数据以便在工作时实时反映,则需要打开位于

的数据库
/Users/<username>/Library/Application Support/iPhone Simulator/4.3.2/Applications/<app bundle identifier>/Documents/<database file>

该文件可能不在确切的位置,但它可以让您了解从哪里开始查看