iPhoneアプリから画像を削除します。 私は以下のメソッドを使用して、イメージの名前を引数として渡します。iPhoneのアプリディレクトリから画像を削除する
問題は画像が削除されないことです。
最後の2行は、自分のアプリケーションディレクトリのコンテンツを示しています。削除したい画像はまだそこにあります。私は間違って何をしていますか?
iPhoneアプリから画像を削除します。 私は以下のメソッドを使用して、イメージの名前を引数として渡します。iPhoneのアプリディレクトリから画像を削除する
問題は画像が削除されないことです。
最後の2行は、自分のアプリケーションディレクトリのコンテンツを示しています。削除したい画像はまだそこにあります。私は間違って何をしていますか?
ドキュメントディレクトリ内のファイルを削除しようとしています。バンドルリソースディレクトリの内容を読みます。これらは同じディレクトリではありません。
Documentsディレクトリのファイルを削除しようとしている場合は、NSLog()の末尾にそのディレクトリをラードする必要があります。バンドル内のファイルを削除しようとしている場合、これは不可能です。アプリバンドルには署名があり、変更することはできません。
あなたのコードは大丈夫に見えますので、あなたのコードにいくつかの「NSError」オブジェクトを追加してみてください:
- (void)removeImage:(NSString*)fileName {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:
[NSString stringWithFormat:@"%@.png", fileName]];
NSError *error = nil;
if(![fileManager removeItemAtPath: fullPath error:&error]) {
NSLog(@"Delete failed:%@", error);
} else {
NSLog(@"image removed: %@", fullPath);
}
NSString *appFolderPath = [[NSBundle mainBundle] resourcePath];
NSLog(@"Directory Contents:\n%@", [fileManager directoryContentsAtPath: appFolderPath]);
}
のコードでは、私はremoveItemAtPathのNSError
誤差パラメータを渡すの上。システムがファイルを削除できない場合、このメソッドはNO
を返し、エラーが発生したerror
オブジェクトを入力します。
あなたのコメントに基づいて、default.pngを削除して別のものに置き換えようとしていることが分かりました。残念ながら、これは不可能です。イメージdefault.pngは、アプリケーションバンドルの一部です。このバンドルは、作成および署名された後は変更できません(これはAppleのセキュリティ対策であるため、レビュー後にアプリケーションを変更することはできません)。ファイルを作成および削除できる唯一の場所は、アプリケーションに与えられたサンドボックス(Documentsフォルダ)内です。
アップルのガイドラインにはありますか?私はそれに関連するものを見つけることができませんでした。 – bruno
以前は「iOS App Programming Guide」(ここで引用したセクション:http://stackoverflow.com/questions/8122267/app-bundle-protection-signed-bundle-may-be-modified)にあるようですが、それを変更しました。私は周りを見回し、これを見つけました:https://developer.apple.com/library/ios/#documentation/General/Conceptual/DevPedia-CocoaCore/AppSigning.html実際に実行可能な部分だけが署名されていることを示すようです。しかしafaik、彼らは実際に実行時に変更を行う方法を提供していません。 –
ここでは、できるだけ多くのユーザーができるようにするためのセクションについて説明します:https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/App-RelatedResources/App-RelatedResources.html# // apple_ref/doc/uid/TP40007072-CH6-SW12 –
私はXCodeで追加した画像を削除しようとしているので、おそらく私のバンドルに入っているはずです。これはデフォルト画像です。私はこれを削除して新しいものを追加しようとしています。 – bruno
AppBundle内の画像は削除できません(Xcodeで追加した画像です)。 – rckoenes
デフォルトのイメージを削除する代わりに、置き換えることはできませんか? – bruno