Я использую фреймворк Siesta и пытаюсь добавить декоратор для обновления токена, когда он истекает, но я получаю: 'self захвачено замыканием до инициализации всех участников'.
В чем может быть причина?
service.configure("**") {
$0.decorateRequests {
self.refreshTokenOnAuthFailure(request: $1) // this line complains
}
}
UPDATE
Я нашел свою проблему и хотел поделиться ею с вами. Проблема связана с услугами, которые были свойствами класса:
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)
}
}
}