文件不再可读更新应用到最新版本后,(Files are no longer readable aft

2019-10-17 17:16发布

我一直在努力为iPad的企业分布式应用了大约一年。 我们已经发布了5款产品构建在那个时候从来没有经历过任何问题。 每当我们的用户已经安装了旧版本的新的建设,我们的核心数据迁移一直工作得很好。 直到我们增加了视频录制应用。

我们已经存储“媒体”的核心数据外部管理的数据类型。 这是工作的罚款,直到我们开始允许用户创建大型视频。 因此,我们则发现,核心数据迁移垃圾是超过5MB〜的任何文件。 在这一点上,我们推出我们自己的文件管理方案。 此制定了完美的罚款,我们写我们自己的文件手动迁移了核心数据和我们自己的方案。 这被释放,而没有问题。

然后,当是时候推出我们的下一集的功能,顿时一个问题弹出。 从Xcode的建设......但是,使用企业部署重新部署后,当从未有过的任何问题,任何在前面的构建写入到文件系统中的文件被突然不可读。 如果设备插入的XCode,这些文件显然是组织者可见。 然而的NSFileManager / NSFileHandle / NSData的无法找到这些文件。 他们总是报告说,他们的经验:

error: {
    NSFilePath = "/var/mobile/Applications/3CFB07B3-D17F-45D7-A233-4E56930D794C/Documents/ep_binary_data/9465C282-7ED2-428E-B7D3-545BCFE4DFC5";
    NSUnderlyingError = "Error Domain=NSPOSIXErrorDomain Code=2 \"The operation couldn\U2019t be completed. No such file or directory\"";
}

就像我说的,我可以确认该文件确实在使用Xcode组织者路径实际存在。 任何帮助将不胜感激。 我一直在敲打我的头在桌子整天试图弄清楚这一点。

用于读取看起来像代码:

NSError *err = nil;
NSData *data = [[NSData alloc] initWithContentsOfFile:self.thumbnail_url 
                                              options:NSDataReadingMappedIfSafe 
                                                error:&err];
if (err != nil) logger(@"error: %@",[err userInfo]);

而这样写:

NSError *error = nil;
[thumbnail_ep_managed writeToFile:filePath options:NSDataWritingAtomic error:&error];
if(error != nil)
{
    NSLog(@"error writing file to path: %@\nerror: %@",filePath,[[error userInfo]description]);
}

我很为难

Answer 1:

我发现一些暴徒在SomethingAwful帮助解决。 问题是,我保存的完整路径,如在包括文件目录。 这是一个iOS设备上的一个错误。 你不能保证升级后,该束路径将仍然是相同的。

有时,包标识符,它是一个散列(应用程序被安装在目录的名称),则升级应用时改变。 所以,如果你保存完整路径,升级可能会制动的存储路径。 解决的办法是只能坚持一个相对路径,从文件目录开始。

然后,当你启动应用程序,缓存文件目录,并添加你的持久相对路径。

所以从我原来的路径:

/var/mobile/Applications/3CFB07B3-D17F-45D7-A233-4E56930D794C/Documents/ep_binary_data/9465C282-7ED2-428E-B7D3-545BCFE4DFC5

这部分可以改变:

3CFB07B3-D17F-45D7-A233-4E56930D794C

所以,我应该只是存储:

ep_binary_data/9465C282-7ED2-428E-B7D3-545BCFE4DFC5

并抓住:

/var/mobile/Applications/3CFB07B3-D17F-45D7-A233-4E56930D794C/Documents/

在应用程序启动的一部分。

瞧,这些文件继续工作。 :)



文章来源: Files are no longer readable after updating application to newest version