Я использую фреймворк Siesta и пытаюсь добавить декоратор, чтобы обновить токен, когда он истечет, но я получаю: «сам захвачен закрытием до инициализации всех членов».
Что может быть причиной?
service.configure("**") {
$0.decorateRequests {
self.refreshTokenOnAuthFailure(request: $1) // this line complains
}
}
ОБНОВИТЬ
Я нашел свою проблему и хотел поделиться ею с вами. Проблема связана с сервисами, которые были свойствами класса:
class API: NSObject {
private let service = Service(
baseURL: myApiBaseUrl,
standardTransformers: [.text, .json]
)
override init() {
#if DEBUG
// Bare-bones logging of which network calls Siesta makes:
LogCategory.enabled = [.network]
#endif
service.configure("**") {
$0.headers["Token"] = "Bearer \(token)"
$0.headers["Content-Type"] = "application/json"
$0.headers["Accept"] = "application/json"
$0.decorateRequests {
self.refreshTokenOnAuthFailure(request: $1)
}
}
}
Вместо использования свойства класса я переместил службу за пределы класса и добавил назначенный инициализатор.
init(myService:Service){
super.init()
myService.configure("**") {
$0.headers["Token"] = "Bearer \(token)"
$0.headers["Content-Type"] = "application/json"
$0.headers["Accept"] = "application/json"
$0.decorateRequests {
self.refreshTokenOnAuthFailure(request: $1)
}
}
}