2016-04-20 4 views
-2

Objective CからSwift 2.2への変換中に問題に直面しています。ここで セッターを変換する、目的変数Cからスウィフト2.2への可変変数

変数が

@property (nonatomic, assign) NSInteger currentViewControllerIndex; 
@property (nonatomic, getter = isWrapEnabled) BOOL wrapEnabled; 

として宣言客観CのコードとObjective Cの変数設定機能さです

- (void)setWrapEnabled:(BOOL)sWrapEnabled { 

    wrapEnabled = sWrapEnabled; 
    [self.view layoutIfNeeded]; 
} 

- (void)setCurrentViewControllerIndex:(NSInteger)curViewControllerIndex { 

    [self scrollToViewControllerAtIndex:curViewControllerIndex animated:NO]; 
} 

これは私がスウィフト

に書かれている方法です
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

「Objective CからSwift 2.2に変換中に問題に直面しています」あなたの既存の試行を含めてください(あなたの質問を編集するには[編集]ボタンを使用してください)。 – Moritz

+0

[Swift Language Guide](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Properties.html)の* Property Observers *セクションをご覧ください。 – vadian

答えて

1

基本的にオブザーバはdidSetだけ必要ですが、残りの変数は通常の変数として動作します。

var wrapEnabled : Bool { 
    didSet { 
     if wrapEnabled { 
     self.view.layoutIfNeeded() 
     } 
    } 
} 

var currentViewControllerIndex : Int { 
    didSet { 
    scrollToViewControllerAtIndex(currentViewControllerIndex, animated:false) 
    } 
} 

初期値が変数に割り当てられているときにオブザーバが呼び出されないことを考慮してください。

関連する問題