NSFilemanager не создает файл - PullRequest
       4

NSFilemanager не создает файл

0 голосов
/ 11 апреля 2011

У меня проблема с NSFileManager, потому что я могу только сохранить файл в каталоге документов приложений, но я хочу создать файл в подкаталоге, но я не думаю, что почему, я не смог создать. мой код ниже:

+(NSString *)applicationDocumentsDirectory {
    return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
}

+(BOOL)storeFile:(NSData*)file withName:(NSString*)name atDirectory:(NSString*)dir{

    NSFileManager *filemgr;
    NSString *docsDir;
    NSString *newDir;
    BOOL create=NO;
    filemgr =[NSFileManager defaultManager];


    docsDir = [StorageManager applicationDocumentsDirectory];

    newDir = [docsDir stringByAppendingPathComponent:dir];

    if(![filemgr fileExistsAtPath:newDir]){
        if([filemgr createDirectoryAtPath:newDir withIntermediateDirectories:NO attributes:nil  error:nil]){
            create=YES;
        }    
    }else
        create=YES;

    if(create){
        if(![filemgr createFileAtPath:newDir contents:file attributes:nil]){
            [filemgr release];
            return YES;
        }
    }

        [filemgr release];
    return NO;
}

1 Ответ

0 голосов
/ 12 апреля 2011

Я не уверен, почему файл не создан. На первый взгляд, похоже, ваш код должен работать. Но я могу что-то упустить. Это также зависит от того, что именно вы передаете в качестве аргументов методу storeFile:withName:atDirectory:.

Тем не менее я публикую ответ, потому что я обнаружил в вашем коде еще одну ошибку: вы должны не отправить release на filemgr, поскольку вы также не отправили retain на него первым, а вы не создал объект. В этом случае нет необходимости отправлять retain на него, поскольку вы используете его только локально в своем методе. Возможно, вы захотите ознакомиться с документом Apple Developer Connection « Основные компетенции Cocoa: управление памятью ».

Не думаю, что эта ошибка объясняет, почему файл не создан; хотя я удивлен, что ваше приложение не падает из-за этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...