2015-09-22 4 views
2

У меня возникли проблемы с переходом от Swift 1.2 до 2.0, особенно с пониманием обработки ошибок при вызове методов из API объектного-c. Например, я не могу правильно реализовать метод checkResourceIsReachableAndReturnError. Согласно документации Swift для этого метода, он вернет Bool. Я хочу, чтобы проверить, существует ли папка (self.baseURL) и попробовал следующие два подхода:Вызов checkResourceIsReachableAndReturnError в Swift 2.0

let folderExists: Bool 
do{ 
     try folderExists = self.baseURL!.checkResourceIsReachableAndReturnError(){ 

     } catch let error as NSError { 

     } 
} 

А:

let folderExists: Bool 
var error: NSError? 
do{ 
     try folderExists = self.baseURL!.checkResourceIsReachableAndReturnError(&error){ 

     } catch error as NSError { 

     } 
} 

Но ни подходы работы. Я также подумал, что быстрая реализация функций бросания ошибок со словом AndReturnError будет сокращена до checkResourceIsReachable, но это, похоже, не так. Я уверен, что делаю что-то принципиально неправильно здесь, и если у кого-то есть предложение, где искать, я бы это оценил.

ответ

4

Этот метод действительно возвращает bool, он не был изменен, чтобы следить за новым механизмом Swift 2 do try catch: это не throw.

Таким образом, вы просто использовать его, как это, без do try catch:

var error:NSError? 
let folderExists = self.baseURL!.checkResourceIsReachableAndReturnError(&error) 
+0

Я только что проверил, а также определение еще без броска @available (IOS 4,0, *) общественного функ checkResourceIsReachableAndReturnError (ошибка: NSErrorPointer) -> Bool – peacer212

+0

Насколько это очевидно, когда вы это указали. Спасибо! –

+1

Я думаю, что в Swift 3 это теперь 'checkResourceIsReachable()' и просто возвращает 'Bool' для типа' URL'. –

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