2015-01-03 3 views

ответ

8

Мое понимание заключается в том, что вы пытаетесь создать каталог программным путем с помощью быстрого доступа. Приведенный ниже код делает то же самое.

var err: NSErrorPointer = nil 
    let manager = NSFileManager.defaultManager() 
    manager.createDirectoryAtPath("/Users/abc/Desktop/swiftDir", withIntermediateDirectories: true, attributes: nil, error: err) 
+1

Что делать, если пользователь не называются «а»? Что делать, если пользователь работает в сети и имеет совершенно другое местоположение для своей файловой системы. Вместо того, чтобы делать предположения о файловой системе пользователя, используйте инструменты для запроса местоположения специальных каталогов. – Abizern

+0

Это абсолютно правильный фрагмент, который отвечает на вопрос OP. Было бы лучше, если бы путь выборки был «/ foo/bar/baz»? –

+0

Спасибо @WarrenBurton ... –

5

Xcode 8 • Свифта 3

extension FileManager.SearchPathDirectory { 
    func createSubFolder(named: String, withIntermediateDirectories: Bool = false) -> Bool { 
     guard let url = FileManager.default.urls(for: self, in: .userDomainMask).first else { return false } 
     do { 
      try FileManager.default.createDirectory(at: url.appendingPathComponent(named), withIntermediateDirectories: withIntermediateDirectories, attributes: nil) 
      return true 
     } catch let error as NSError { 
      print(error.description) 
      return false 
     } 
    } 
} 

Использование:

if FileManager.SearchPathDirectory.desktopDirectory.createSubFolder(named: "untitled folder") { 
    print("folder successfully created") 
} 

SearchPathDirectory

+1

Я бы использовал 'first' вместо прямого доступа к первому объекту с индексом' [0] '. Один возвращает необязательный, другой вызывает ошибку времени выполнения, если массив пуст. – Abizern

3

В Swift 2.0 вы должны использовать новый стиль для обработки ошибок:

let path: String = "/Users/abc/Desktop/swiftDir" 
let fileManager = NSFileManager.defaultManager() 
do 
{ 
    try fileManager.createDirectoryAtPath(path, withIntermediateDirectories: true, attributes: nil) 
} 
catch let error as NSError 
{ 
    print("Error while creating a folder.") 
} 
+0

Привет JavaNut. Я знаю, что терминатор в этом случае не является обязательным, но синтаксис печати - это что-то еще, что изменилось в swift 2.0: мое намерение заключалось в том, чтобы показать, что печать («Ошибка при создании папки»., Terminator: «\ n") - это новый синтаксис команды печати, и если вы не даете терминатору, после текста печатается новая строка. Так что кто-то может узнать, как показать его в полном синтаксисе. Команда печати выше имеет значения differenz в Swift 1 и Swift 2. Я хотел избежать путаницы в этом. –

Смежные вопросы