我在从Objective C转换到Swift 2.2时遇到问题。有人能帮我吗。。??
这是目标C 中的代码
声明为的变量
@property (nonatomic, assign) NSInteger currentViewControllerIndex;
@property (nonatomic, getter = isWrapEnabled) BOOL wrapEnabled;
目标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!
}
}
基本上,您只需要didSet
观察器,其余的变量表现为正常变量。
var wrapEnabled : Bool {
didSet {
if wrapEnabled {
self.view.layoutIfNeeded()
}
}
}
var currentViewControllerIndex : Int {
didSet {
scrollToViewControllerAtIndex(currentViewControllerIndex, animated:false)
}
}
请考虑,当初始值被分配给变量时,不会调用观测器。