Подтвердить что ты не робот

Как сделать каталог iOS?

Хорошо,

Итак, у меня есть приложение Cydia, которое мне нужно обновить. Я знаю с приложениями Cydia, что у них нет папки "Документы", поэтому вы должны ее создать. И вот как я сделал это раньше в iOS 4 (который не работает на iOS 5):

mkdir("/var/mobile/Library/APPNAME", 0755);
mkdir("/var/mobile/Library/APPNAME/Documents", 0755);

NSString *foofile = @"/var/mobile/Library/APPNAME/Documents/database.db";
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:foofile];

if (fileExists == TRUE) {
    NSLog(@"already exists");
} else {
    NSLog(@"doesn't exists");
    NSFileManager *fileManager = [[NSFileManager defaultManager]autorelease];
    NSError *error;
    NSString *documentDBFolderPath = @"/var/mobile/Library/APPNAME/Documents/database.db";

    NSString *resourceDBFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"database.db"];
    [fileManager copyItemAtPath:resourceDBFolderPath toPath:documentDBFolderPath error:&error];

}

Я также включил код, который копирует файл базы данных в эту папку. Это не работает (даже когда я создаю папку вручную через SSH).

Пожалуйста, помогите! Спасибо.

4b9b3361

Ответ 1

Вот метод, который я создал для создания каталогов

-(void)createDirectory:(NSString *)directoryName atFilePath:(NSString *)filePath
{
    NSString *filePathAndDirectory = [filePath stringByAppendingPathComponent:directoryName];
    NSError *error;

    if (![[NSFileManager defaultManager] createDirectoryAtPath:filePathAndDirectory
                                   withIntermediateDirectories:NO
                                                    attributes:nil
                                                         error:&error])
    {
        NSLog(@"Create directory error: %@", error);
    }
}

Ответ 2

Попробуйте использовать createDirectoryAtURL:withIntermediateDirectories:attributes:error:.

NSFileManager Ссылка на класс:

createDirectoryAtURL:withIntermediateDirectories:attributes:error:

Создает каталог с заданными атрибутами по указанному пути.

Параметры

url - URL-адрес файла, определяющий создаваемый каталог. Если вы хотите указать относительный путь, вы должны установить текущей рабочей директории перед созданием соответствующего Объект NSURL. Этот параметр не должен быть равен нулю.

createIntermediates - Если YES, этот метод создает любые несуществующие родительские каталоги как часть создания каталога в URL-адресе. Если NO, этот метод терпит неудачу, если какой-либо из промежуточных родительских каталогов не существует. Этот метод также терпит неудачу, если какой-либо промежуточный путь Элементы соответствуют файлу, а не каталогу.

attributes - Атрибуты файла для нового каталога и любого вновь созданного промежуточные каталоги. Вы можете установить номер владельца и группы, разрешения на файлы и дату изменения. Если вы укажете nil для этого параметр или опустить определенное значение, одно или несколько значений по умолчанию как описано в обсуждении. Для списка ключей вы можете включить в этот словарь, см. раздел "Константы" (стр. 54) глобальные константы, используемые в качестве ключей в словаре атрибутов. Некоторые ключей, таких как NSFileHFSCreatorCode и NSFileHFSTypeCode, do не относится к каталогам.

error - На входе указатель на объект ошибки. Если возникает ошибка, этот указатель установлен на фактический объект ошибки, содержащий ошибку Информация. Вы можете указать nil для этого параметра, если вы не хотите получить информацию об ошибке.

Возвращаемое значение
YES, если каталог был создан или уже существует, или НЕТ, если произошла ошибка.

Ответ 5

В Swift возвращает true, если существует или создается.

func ensureDirectoryExists(path:String) -> Bool {

    if !NSFileManager.defaultManager().fileExistsAtPath(path) {
        do {
            try NSFileManager.defaultManager().createDirectoryAtPath(path, withIntermediateDirectories: true, attributes: nil)
        } catch {
            print(error)
            return false
        }
    }
    return true
}