Arrays 数组追加后为零

Arrays 数组追加后为零,arrays,swift,Arrays,Swift,我有两种类型,第一种是汽车,具有属性功能,第二种是功能 我有一个属性cars:[Car],当我将新车附加到它时,它返回nil 我在下面的代码片段中创建了一个示例: class Car { let make: String var features: Feature? let id: String init(make: String, features: Feature?, id: String) { self.make = make

我有两种类型,第一种是
汽车
,具有属性
功能
,第二种是
功能

我有一个属性
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)
我的问题是:数组出现后不应该增加计数吗?我错过了什么


请注意,此代码只是示例,因此请忽略键入错误和编码约定。

您尚未初始化数组


var cars:[Car]?
替换您的
var cars:[Car]?=[]

您尚未初始化阵列


var cars:[Car]?
替换您的
var cars:[Car]?=[]

为什么要将其设置为可选?只要做:
var cards=[Car]()
@rmaddy我想建议,但是如果OP创建了它,而不是可选的,OP就不会发现这个警告。现在,希望下次他们遇到这样的问题时,能够调试它。:)@rmaddy OP有一个可选选项。你怎么知道在执行代码时,
cars
不能
nil
?@AminNegm Awad给定发布的代码,没有明显的理由将数组设为可选。@rmaddy这是真的。但这需要发布最少的代码,而大多数用户发布的代码至少减少了。所以这个假设类似于勇敢。为什么要让它成为可选的呢?只要做:
var cards=[Car]()
@rmaddy我想建议,但是如果OP创建了它,而不是可选的,OP就不会发现这个警告。现在,希望下次他们遇到这样的问题时,能够调试它。:)@rmaddy OP有一个可选选项。你怎么知道在执行代码时,
cars
不能
nil
?@AminNegm Awad给定发布的代码,没有明显的理由将数组设为可选。@rmaddy这是真的。但这需要发布最少的代码,而大多数用户发布的代码至少减少了。所以这个假设类似于勇敢。为什么
features
参数和
features
属性被命名为
features
,而不是
feature
?仅当您可以传递或存储多个值时才使用复数。@rmaddy请注意,此代码只是示例,因此请忽略打字错误和编码惯例。如果您需要代码方面的帮助,您需要发布导致问题的实际代码。否则你会浪费人们的时间指出可能存在或可能不存在的问题。真的吗?我不知道打破代码惯例会在代码中产生错误。但打字错误和其他“假”代码会浪费人们的时间。最好张贴真实、真实、复制和粘贴的代码,清楚地说明您的问题。为什么将
功能
参数和
功能
属性命名为
功能
,而不是
功能
?仅当您可以传递或存储多个值时才使用复数。@rmaddy请注意,此代码只是示例,因此请忽略打字错误和编码惯例。如果您需要代码方面的帮助,您需要发布导致问题的实际代码。否则你会浪费人们的时间指出可能存在或可能不存在的问题。真的吗?我不知道打破代码惯例会在代码中产生错误。但打字错误和其他“假”代码会浪费人们的时间。最好张贴真实、真实、复制和粘贴的代码,清楚地演示您的问题。