2017-09-19 3 views
-1

私は2つの型があり、最初はfeatureCarであり、第2の型はFeatureです。配列はそれに追加した後でnilです

私はプロパティーcars: [Car]を持っています。新しい車を追加すると、nilが返されます。

私は以下のスニペットでサンプルを作成しました:私の質問はある

class Car { 
    let make: String 
    var features: Feature? 
    let id: String 

    init(make: String, features: Feature?, id: String) { 
     self.make = make 
     self.features = features 
     self.id = id 
    } 
} 

class Feature { 
    let convertible: String 

    init(convertible: String) { 
     self.convertible = convertible 
    } 

} 

var cars: [Car]? 
var feature: Feature? 

let featureElement = Feature(convertible: "yes") 
feature = featureElement 

let car = Car(make: "SomeMaked", features: feature, id: "ID") 

cars?.append(car) 

print(cars) 

:配列は、それにappening後にその数を増やすべきではないでしょうか。私は何が欠けていますか?

このコードは単なるサンプルであるため、誤植やコード規則を無視してください。

+0

であなたのvar cars: [Car]?を交換してください複数の値を渡したり格納したりすることができる場合にのみ、複数形を使用してください。 – rmaddy

+0

@rmaddy **このコードは単なるサンプルなので、タイプミスやコーディング規則を無視してください。** – MEnnabah

+1

コードのヘルプが必要な場合は、問題の原因となる実際のコードを掲載する必要があります。さもなければ実際に存在するかもしれない問題を指摘する人々の時間を浪費します。 – rmaddy

答えて

2

あなたの配列は初期化されていません。

なぜ代わりにfeature` `の` features`パラメータと `features`という名前の` features`財産です?var cars: [Car]? = []

+4

なぜそれをオプションにしますか?ちょっとしてください: 'var cards = [Car]()' – rmaddy

+1

@rmaddy私はそれを提案したいと思いましたが、もしOPがそれをオプションで作成しなかったなら、OPはこの注意点を理解していませんでした。今度はうまくいけば、次回にこのような問題が発生すると、デバッグすることができます。 :) –

+0

@rmaddy OPにはオプションがあります。コード実行時に 'cars'が' nil'にならないことをどうやって知ることができますか? –

関連する問題