私はiPad用のエンタープライズ分散アプリケーションに約1年間取り組んできました。その間に5つのプロダクションビルドをリリースしましたが、問題は発生していません。ユーザーが古いバージョンの上に新しいビルドをインストールするたびに、CoreDataの移行は常に正常に機能しました。アプリケーションにビデオ録画を追加するまで。
CoreDataの外部管理データタイプに「メディア」を保存していました。これは、ユーザーが大きな動画を作成できるようになるまでは問題なく機能していました。そのため、Core Dataの移行により、5MBを超えるファイルがすべて破棄されることがわかりました。この時点で、独自のファイル管理スキームを導入しました。これは完全にうまくいきました。コアデータから独自のスキームへのファイルの独自の手動移行を作成しました。これは問題なくリリースされました。
次に、次の一連の機能を展開するときに、突然問題が発生しました。Xcodeからビルドするときに問題は発生しませんでした...しかし、Enterprise Deploymentを使用して再デプロイした後、前のビルドでファイルシステムに書き込まれたファイルが突然読み取れなくなりました。デバイスが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 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]);
}
私は困惑しています