Преобразование установщика, переменная получателя от цели 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)
   }
}

Учтите, что наблюдатели не вызываются, когда начальное значение присваивается переменной.

Другие вопросы по тегам