2
- (NSURL *) applicationDocumentsDirectory
{
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}

...。

NSURL *folder = [[[Database sharedInstance] applicationDocumentsDirectory] URLByAppendingPathComponent:@"temp"];
BOOL isFolder;
NSLog(@"URL: %@", folder);
if ([[NSFileManager defaultManager] fileExistsAtPath:folder.absoluteString isDirectory:&isFolder] == NO)
{
    NSLog(@"IsFolder: %d", isFolder);
    [[NSFileManager defaultManager] createDirectoryAtURL:folder withIntermediateDirectories:YES attributes:nil error:&error];
    if (error)
        NSLog(@"Error: %@", error.localizedDescription);
}

コードのこの部分を2回実行します。

フォルダが作成されることを期待していますが、「IsFolder:7」というログを受け取るたびに。

最初の実行後にフォルダが作成されなかったのはなぜですか?

4

2 に答える 2

10

問題はにありましたfolder.absoluteString

folder.path代わりにすべきです。

于 2013-01-25T08:51:58.620 に答える
8

folder.absoluteString を folder に置き換えてください。問題は解決します。

ステップバイステップに従ってください:

1) ドキュメントフォルダを取得

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

2) ドキュメントフォルダとフォルダ名を取得

NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"MyFolder"];

3) アラートの有無を確認する

if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]){

    NSError* error;
    if(  [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error])

        else
        {
            NSLog(@"[%@] ERROR: attempting to write create MyFolder directory", [self class]);
            NSAssert( FALSE, @"Failed to create directory maybe out of disk space?");
        }
于 2013-01-25T08:38:14.337 に答える