2009-08-22 92 views
1

我已经从命令行创建了一个sqlite3数据库并插入了几条记录。我的应用程序检索所有这些并显示它们很好。然后我通过sqlite3 cli返回并插入更多记录,将db文件从模拟器的文档目录中清除,以便从主包中重新复制,然后再次运行应用程序,仅发现它仅显示我插入的原始记录。新记录不显示。我验证了新的db文件被复制到模拟器文档目录中,当我将sqlite3 cli指向它时,我可以执行select *并查看所有记录。无法刷新i​​phone sqlite3数据库

这里可能会发生什么?它几乎看起来好像以前的版本的数据库文件被缓存在某处,而不是我的更新版本。

//斯科特

回答

2

每当您在xcode中重建并运行应用程序时,它会在iphone模拟器的应用程序文件夹下创建一个新文件夹。如果您的sqlite数据库包含在xcode中,那么旧数据库可以放在新文件夹中,而您编辑的数据库位于旧的和现在未使用的文件夹中。

+0

xcode把这些新文件夹放在哪里?我只知道projectname/build/Debug-iphonesimulator/projectname.app – skantner 2009-08-22 12:11:53

+1

我发现它:/ Users/username/Library/Application Support/iPhone Simulator/User/Applications / – skantner 2009-08-23 02:32:14

0

我还没有证实他的答案,但Stephan Burlot said

SQLite的用来请求缓存。关闭&重新打开数据库以释放缓存内存。

(我不认为这是真的,每一个SQLite的实例缓存请求,但可能是iPhone上的情况。)

显然,你是不关心的内存,但如果是缓存请求,也许只是一个关闭,然后重新打开就是你所需要的。

如果情况并非如此,我的下一个猜测是,您的应用程序没有指向该文件是否认为这是指向 - 你拥有它指向一个不同名称的数据库在一个点和忘记更新应用程序?您可以通过从您的应用程序中更新数据库来验证这一点,然后使用CLI检查这些更新。你可能会发现他们没有看同一个数据库。