App版本升级,Documents里的sqlite会被覆盖/无视?

2010-08-10 19:41:01 +08:00
 kukat
Resource里有个myapp.sqlite
执行程序的时候检查Documents里有没有myapp.sqlite
没有的话复制Resource的myapp.sqlite到Documents下的myapp.sqlite
程序使用Documents下的myapp.sqlite


这样是没问题,但是程序升级的时候是怎么样一个操作过程?
我试过删除掉app,什么都没改,然后重新编译运行,/Users/Alex/Library/Application Support/iPhone Simulator/4.0.1/Applications/%{color:red} 7394719E-D792-40A1-9F15-AA39BEF316BE%/Documents/myapp.sqlite 红色部分会变,这样就拿不到正确的Documents路径了哇


如果程序升级后不就丢失了以前的数据了?
召唤解释帝
5776 次点击
所在节点    iDev
8 条回复
kukat
2010-08-10 19:43:48 +08:00
1. 编辑器原来不是textile阿……
2. 怎么编辑帖子?
3. 来人帮忙解答阿
Kai
2010-08-10 19:56:01 +08:00
程序升级的时候,App 自己产生的 SQL 文件不会被覆盖。

一般在这种时候会在 Bundle 里面存一个预设的 SQL,用在程序初始化的时候自动拷贝 /Documents 下。

换到机器上面试试看?
kukat
2010-08-10 20:04:52 +08:00
@Kai
我说的Resource就是指的Bundle

我在真机上试过了
本来是
/var/mobile/Applications/AEF8A0A5-0B81-4092-BAF5-C70FFE6A33A0/Documents/myapp.sqlite
删除后在编译运行
/var/mobile/Applications/E244258C-25C5-4FD2-9D70-A31C9593DFE1/Documents/myapp.sqlite

App ID 变鸟,之前的数据也木有鸟……
Kai
2010-08-10 20:08:51 +08:00
程序初始化时候的检查是否存在这个文件以及之后的覆盖这方面设置没有出错?

另外,Clear All Targets 先 ?
Livid
2010-08-10 20:14:41 +08:00
你用来获取 Documents path 的那几句程序是?
Livid
2010-08-10 20:18:10 +08:00
我的获取方法:

NSArray * searched = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * documentPath = [searched objectAtIndex:0];

这样在升级的时候是确实可以找到之前的文件的。
kukat
2010-08-11 11:25:34 +08:00
@Livid
我的代碼是
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
NSString * databasePath = [documentsDir stringByAppendingPathComponent: DBNAME];

你有试过从模拟器或者真机删除App,然后再编译运行吗?
App ID是一定会变的。
如果这个方法可用,是不是说明升级的时候不是 删除旧的->安装新的
huacnlee
2010-08-11 18:55:21 +08:00
我根本没有 SqlLite文件在项目里面,而是在程序运行的时候产生,如果以前没产生的话

这样就不用担心升级被覆盖的问题了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1562

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX