我一直在为 iPad 开发企业分布式应用程序大约一年。我们在那段时间发布了 5 个生产版本,从未遇到任何问题。每次我们的用户在旧版本上安装新版本时,我们的核心数据迁移总是运行良好。直到我们将视频录制添加到应用程序中。
我们一直将“媒体”存储在 Core Data Externally Managed 数据类型中。在我们开始允许用户创建大型视频之前,这一直很好。因此,我们随后发现 Core Data 迁移会丢弃任何超过 5mb 的文件。在这一点上,我们推出了自己的文件管理方案。这非常好,我们编写了我们自己的手动将文件从 Core Data 迁移到我们自己的方案中。这是毫无问题地发布的。
然后,当需要推出我们的下一组功能时,突然出现了一个问题。从 Xcode 构建时从来没有任何问题......但是,在使用 Enterprise Deployment 重新部署之后,在之前的构建中写入文件系统的任何文件突然变得不可读。如果将设备插入 XCode,则文件在 Organizer 中清晰可见。但是 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 Organizer 验证文件确实存在于该路径中。任何帮助将不胜感激。我整天都在把头从桌子上敲下来,试图弄清楚这一点。
用于读取的代码如下所示:
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]);
}
我很难过