Преобразование установщика, переменная получателя от цели C к быстрому 2.2
Я сталкиваюсь с проблемами при переходе с Objective C на Swift 2.2.. Кто-нибудь может мне помочь..??
Вот код в Objective C
переменные объявлены как
@property (nonatomic, assign) NSInteger currentViewControllerIndex;
@property (nonatomic, getter = isWrapEnabled) BOOL wrapEnabled;
и функции установки переменных в Objective C являются
- (void)setWrapEnabled:(BOOL)sWrapEnabled {
wrapEnabled = sWrapEnabled;
[self.view layoutIfNeeded];
}
- (void)setCurrentViewControllerIndex:(NSInteger)curViewControllerIndex {
[self scrollToViewControllerAtIndex:curViewControllerIndex animated:NO];
}
Вот как я написал в Swift
var tmpWrapEnabled : Bool = Bool()
internal(set) var wrapEnabled : Bool? {
get {
return tmpWrapEnabled
}
set(newValue) {
if newValue == true {
tmpWrapEnabled = newValue!
self.view.layoutIfNeeded()
}
}
}
var tmpCurrentViewControllerIndex : NSInteger = 0
internal(set) var currentViewControllerIndex : NSInteger? {
get {
return tmpCurrentViewControllerIndex
}
set(newValue) {
tmpCurrentViewControllerIndex = newValue!
}
}
1 ответ
В основном вам нужно только didSet
Наблюдатели, в остальном переменная ведет себя как нормальная переменная.
var wrapEnabled : Bool {
didSet {
if wrapEnabled {
self.view.layoutIfNeeded()
}
}
}
var currentViewControllerIndex : Int {
didSet {
scrollToViewControllerAtIndex(currentViewControllerIndex, animated:false)
}
}
Учтите, что наблюдатели не вызываются, когда начальное значение присваивается переменной.