4

掘り下げて半分ほど調べたところ、フォルダーを作成する権限がないことがわかりました。フォルダーを作成する権限を取得するにはどうすればよいですか?

[[NSFileManager defaultManager] createDirectoryAtPath:[NSString stringWithFormat:@"%@/%@",downloadLocation,kAmazonCatalogsPrefix]
                          withIntermediateDirectories:YES
                                           attributes:nil
                                                error:&error];

Error Domain=NSCocoaErrorDomain Code=513 "The operation couldn’t be completed. (Cocoa error 513.)" UserInfo=0x1f18a8b0 {NSFilePath=/var/mobile/Applications/AB570058-4E4A-41B2-9E40-5C93316D6307/eCatalogs, NSUnderlyingError=0x1f18a830 "The operation couldn’t be completed. Operation not permitted"}
4

2 に答える 2

7

コンパイル済みアプリのバンドル フォルダーの内容を変更することはできません。これは、バンドルがコンパイルされたアプリケーションであるためです。これにより、マルウェアがインストール後にアプリを変更する可能性を防ぎます。

実行時に生成されたファイルはDocumentsTempまたはCacheフォルダに保存する必要があります。これらのフォルダーは、アプリからのみアクセスできます。他のアプリはこれらのフォルダーの内容にアクセスできません。

サンプルコード:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSError *error;
[[NSFileManager defaultManager] createDirectoryAtPath:[documentsDirectory stringByAppendingPathComponent:@"yourFolderName"] withIntermediateDirectories:NO attributes:nil error:&error];
于 2013-09-02T13:04:19.797 に答える
7

以下の SWIFT の回答を確認してください。

var paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String

[NSFileManager.defaultManager().createDirectoryAtPath(paths.stringByAppendingPathComponent("Hello"), withIntermediateDirectories: false, attributes: nil, error: nil)]


println(paths)
于 2015-01-29T04:27:37.097 に答える