2017-08-25 9 views
-1

私は次のように定義されてChallengesというクラスがあります。オブジェクト型の値を含む配列を定義することはできませんか?

class Challenges { 

    var title : String? 
    var description : String? 
    var points : Int? 
    var status : String? 
    var img :String? 

    init (title : String ,description : String , point : Int , status : String , img : String){ 

     self.title = title 
     self.description = description 
     self.points = point 
     self.status = status 
     self.img = img 
    } 
} 

そして、私はそれのインスタンスを作成しようとしています:

var test = Challenges(title: "indoor", description: "hard", point: 123 , status: "Done", img: "img.com") 

そして私は、ANにインスタンスを配置するに配列:

var holdChallenges : [Challenges] = [test] 

は、その後、私は次のエラーを得た: Cannot use instance member 'bounds' within property initializer; property initializers run before 'self' is available

ので、私はそれを変更:

lazy var holdChallenges : [Challenges] = [self.test] 

し、私は次のエラーを取得しています:タイプNSObjectのの

値は、[test]を返すことができる値なしメンバーのテスト

+0

を行うことができますか? –

+2

また、コード内のどこにも "インスタンスメンバー 'bounds'"はありません。問題を示す実際の自己完結型の例を示してください。 –

+0

イニシャライザでオプション以外の値が必要な場合に、プロパティをオプションにするのはなぜですか?これらは使用される値であるため、パラメータのオプションの型を持つことは無意味なようです。 – Abizern

答えて

1

Anwerは「自己」の前に実行プロパティの初期化子がありので、あなたは(1つのプロパティを初期化しようとしているので、あなたが間違った宣言

を作るように、提供されています変数)を初期化プロセス中に別の変数と置き換えます。この時点では変数はまだ利用できません。

*あなたは `test`と` holdChallenges`変数を定義しない場合は*あなたはこの

var test = Challenges(title: "indoor", description: "hard", point: 123 , status: "Done", img: "img.com") 

    // one way 

    var holdChallen :[Challenges ] = [Challenges(title: "indoor", description: "hard", point: 123 , status: "Done", img: "img.com")] 

    // second way 

    var holdChallenges : [Challenges] { 

     return [test] 
    } 
1

を持っていませんcomputed propertyのように:

var holdChallenges: [Challenges] { 
    return test 
} 

それともlazyプロパティ経由:

lazy var lazyHoldChallenges: [Challenges] = { 
    return [self.test] 
}() 
関連する問題