文件管理器未从旧版应用中清除

时间:2016-03-25 00:37:04

标签: ios objective-c

您好我的代码中有一个应用程序可以将文件加载到蓝牙设备中,但似乎如果我为应用程序的新版本更改该文件,如果我只是重新安装它就不会更新它。我必须删除该应用程序并再次安装它。谁知道为什么?是否有一些缓存存储?

   NSString *fileInDocuments = [documentsDirectory  stringByAppendingPathComponent:@"samplefile_pack.bin"];
   NSLog(@"File: %@", fileInDocuments);
   if ([fileManager fileExistsAtPath:fileInDocuments ] == NO) {
   NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"samplefile_pack" ofType:@"bin"];
  [fileManager copyItemAtPath:resourcePath toPath:fileInDocuments error:&error];
}

1 个答案:

答案 0 :(得分:1)

我假设您的应用的v1与您在问题中发布的应用的v2具有相同的代码。假设这是真的,你看到的行为很有意义。

用户运行您应用的v1。该文件不在Documents文件夹中,因此它将从应用程序包中复制。现在,每次他们运行您的应用程序时,该文件都存在,并且使用了Documents中的副本。

现在用户更新到您应用的v2。进行相同的检查。该文件已存在于Documents中,因此不会复制任何内容。

由于您的问题意味着您希望在运行应用程序的第一次v2时安装此文件的更新副本,您需要检测用户当前是否具有Documents文件夹中v1或v2的文件。

有几种方法可以解决这个问题。一种选择是将文件重命名为samplefile_pack2.bin。然后您的检查可以是新文件名。您也可以检查旧的,如果有意义则将其删除。