У меня есть абстрактный класс AuthResult
, который имеет имущество - Token
модель класса.Как переопределить метод setter для объекта property, который имеет собственные свойства внутри?
#import <Foundation/Foundation.h>
@class Token;
@interface AuthResult : NSObject
+ (instancetype)sharedInstance; // designated initializer
@property (readwrite, strong, nonatomic) Token *token;
@property (readwrite, nonatomic) BOOL isAuthorized;
@end
Token
модель класса, в свою очередь, имеет 5 свойств в пределах:
#import <Foundation/Foundation.h>
@interface Token : NSObject
@property (readwrite, strong, nonatomic) NSString *accessToken;
@property (readwrite, strong, nonatomic) NSDate *expirationDate;
@property (readwrite, strong, nonatomic) NSString *tokenType;
@property (readwrite, strong, nonatomic) NSString *scope;
@property (readwrite, strong, nonatomic) NSString *refreshToken;
@end
Моя цель состоит в том, чтобы переопределить метод сеттер в AuthResult
классе для того, чтобы обрабатывать различные случаи. Например. после запроса обновления токена у него есть refreshToken
свойство пустое, поэтому мне не нужно его удалять.
Я попробовал этот подход - сеттер в AuthResult
классе:
- (void)setToken:(Token *)token {
_token.accessToken = token.accessToken;
_token.expirationDate = token.expirationDate;
_token.tokenType = token.tokenType;
_token.scope = token.scope;
if (token.refreshToken != nil) {
// DO NOT OVERRIDE REFRESH_TOKEN HERE (after refresh token request it comes as null)
_token.refreshToken = token.refreshToken;
}
}
Но это не работает. Он делает объект токена в классе AuthResult
всегда пустым.
Как я вижу - у меня нет доступа к свойствам объекта. У меня есть доступ к переменной экземпляра - «_token». Но у меня нет доступа к его свойствам.
Прошу совета. Спасибо
я думаю, вы должны проверить '_token == nil' перед присвоением значения и создать его, если это необходимо? – Lucho