如何在开发过程中测试我的应用数据持久性?

时间:2010-10-21 01:29:59

标签: iphone objective-c xcode ios persistence

我的问题与以下三个问题有关。

  1. iPhone What happens to previous data when app is upgraded to new version

  2. How the application upgrade works in iPhone

  3. Preventing erasure of user data while upgrading iOS application via iTunes

  4. 以下是我的两个问题。

    1. 我是否应该在文件系统上手动创建“文档”目录,或者在xcode中只创建一个“组”,这样当应用程序升级时,数据会保持不变?

    2. 如何在模拟器或iPhone上的应用开发过程中测试应用持久性?

    3. 感谢。

3 个答案:

答案 0 :(得分:3)

  1. 都不是。安装应用程序时,将为您创建Documents目录。您可以使用以下方式获取它的路径:

    NSString *docuDir = nil;
    NSArray *list = NSSearchPathForDirectoriesInDomains(
            NSDocumentsDirectory, NSUserDomainMask, YES/*expand tilde*/);
    if ([list count]) docuDir = [list objectAtIndex:0U];
    
  2. 正如@Ben所说,只有在您明确卸载应用程序时才删除该目录(从Springboard中删除它)。在构建和运行时,Xcode可以有效地对您的应用进行就地升级。如果一切都完好无损(并且没有理由不会),你应该没事。

答案 1 :(得分:1)

升级应用程序后,您的Documents文件夹保持不变。您可以在第一次运行应用程序时将文件复制到Documents目录中,例如sqlite文件,显然只有在它尚不存在时才会复制。如果您使用CoreData,它将自动将数据存储在那里。如果数据架构在升级时发生更改,则需要能够运行迁移脚本,因此请记住这一点。 CoreData具有迁移功能,可以为您处理此问题,当然您也可以手动执行此操作。

当您在模拟器中运行应用程序时,它还会保留Documents目录,因此您必须从模拟器中删除该应用程序以模拟全新安装。由于Documents文件夹是在首次运行的“全新安装”中创建的,因此只需运行代码即可模拟升级。

答案 2 :(得分:1)

另一种方法是查看Documents文件夹。如果您在模拟器中运行您的应用程序,那么您的应用程序的Documents文件夹将具有以下路径:

  

/ Users / itsaboutcode / Library / Application Support / iPhone Simulator / 4.1 / Applications / SOME_LONG_HEX_KEY_THAT_MAPS_TO_YOUR_APP /

如果您正在iDevice上进行测试,请使用Xcode的Organizer窗口的Summary选项卡。在底部有一个名为Applications的部分。你的应用程序将接近该列表的顶部,它将有一个切换三角形 - 你将点击它。这将显示“应用程序数据”,可以通过单击向右的向下箭头下载。

iPhone模拟器的优点是可以随意修改Documents文件夹及其内容。 iDevice上的应用程序数据是只读的(当然,除了您的应用程序在运行时)。