将setter、getter变量从目标C转换为swift 2.2



我在从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)
   }
}

请考虑,当初始值被分配给变量时,不会调用观测器。

最新更新