どう

2017-01-02 4 views
-1

を必要な引数を渡さずに初期化子を持つクラスからの値にアクセスする私は初期化子でpagdataSourceというクラスがあります。 クラスPagDataSource {どう

  var itemsOffSet: Int 
      /////some other variables 

init(messages: [Message], itemGenerator: ((Int) -> TextModel)?) { 
     //////initializing 
} 

点であるが、私はからitemsOffsetにアクセスする必要があります別のクラス。ここで私はそうした方法です。

class randomClass { 


    var offset = PagDataSource().itemsOffSet  
     //gives error, arguments required. 
} 

初期化のために変数を渡さずにitemsOffset変数にアクセスする方法はありますか?

+0

'static var itemsOffSet:Int'を使ってみてください – iAkki

+2

なぜクラスの変数に初期化せずにアクセスしたいのですか?その価値はどんな使い方ですか?おそらくプログラムの周りに 'PagDataSource'の正しいインスタンスを渡すべきでしょう。 – luk2302

答えて

1

のようなアクセスをクラス:

convenience init() { 
    self.init(messages: [],itemGenerator: nil) 
} 
+0

素晴らしい、完全に便利なイニシャライザを忘れてしまった。便利なinit(){ self.init() }と簡単にうまく動作しましたが、ガイダンスのおかげで – Ryan

1

PagDataSource initは、2つの引数メッセージとitemGeneratorを受け取ります。オブジェクトを作成している間は何も渡していません。パラメータ化されたinitを作成するか、パラメータなしのinitをもう1つ作成します。

例えば:あなたはPagDataSourceに初期化剤の利便性を追加する必要がrandomClassvar offset = PagDataSource().itemsOffSetを書き込むためには

クラスPagDataSource {

 var itemsOffSet: Int 

init(messages: [Message], itemGenerator: ((Int) -> TextModel)?) { 
    //////initializing 
} 

init() { 
... 
} 
} 

let pagDataSource = PagDataSource() 
var offset = pagDataSource.offset