#ios #swift
#iOS #swift
Вопрос:
в Objective-C это работает нормально
Не удается скомпилировать это в Swift
Или
Определение ALAuthorizationStatus в IOS SDK
enum ALAuthorizationStatus : Int {
case NotDetermined // User has not yet made a choice with regards to this application
case Restricted // This application is not authorized to access photo data.
// The user cannot change this application’s status, possibly due to active restrictions
// such as parental controls being in place.
case Denied // User has explicitly denied this application access to photos data.
case Authorized // User has authorized this application to access photos data.
}
Комментарии:
1. Пожалуйста, покажите нам ваше определение enum.
2. AssetsLibrary из IOS SDK
Ответ №1:
Оператор сравнения ==
возвращает a Bool
, а не Boolean
. Компилируется следующее:
func isAuthorized() -> Bool {
let status = ALAssetsLibrary.authorizationStatus()
return status == ALAuthorizationStatus.Authorized
}
(Лично я нахожу сообщения об ошибках компилятора Swift иногда сбивающими с толку.
В этом случае проблема заключалась не в аргументах ==
, а в неправильном типе возвращаемого значения.)
На самом деле, следующее также должно компилироваться из-за автоматического вывода типа:
func isAuthorized() -> Bool {
let status = ALAssetsLibrary.authorizationStatus()
return status == .Authorized
}
Но он завершается ошибкой компилятора «Не удалось найти член ‘Авторизованный'», если вы
явно не укажете тип status
переменной:
func isAuthorized() -> Bool {
let status:ALAuthorizationStatus = ALAssetsLibrary.authorizationStatus()
return status == .Authorized
}
Это может быть ошибка в текущем компиляторе Swift (протестировано с помощью Xcode 6 beta 1).
Обновление: первая версия теперь компилируется в Xcode 6.1.