为什么我不能在iOS中将字典中的值附加到数组中?

为什么我不能在iOS中将字典中的值附加到数组中?,ios,arrays,swift,dictionary,null,Ios,Arrays,Swift,Dictionary,Null,我试图从字典中获取键和值,并试图将它们添加到数组中。但是我得到了一个空指针异常 var denominationValues:[String]! -----> Array Declaraion for (denomination,productId) in tariffPackageDetailsArray[indexPath.row].tariffPlanDenominationAndProductId! { denominationValues.append(produc

我试图从字典中获取键和值,并试图将它们添加到数组中。但是我得到了一个空指针异常

 var denominationValues:[String]! -----> Array Declaraion
 for (denomination,productId) in tariffPackageDetailsArray[indexPath.row].tariffPlanDenominationAndProductId!
 {
    denominationValues.append(productId)
  }

如果我打印这些值,我会得到正确的值。但是为什么我不能将其添加到数组中呢?我犯了什么错误?任何人请帮助我…提前谢谢。

数组已声明但未初始化

var denominationValues = [String]()

您没有为刚刚声明的数组分配内存

 var denominationValues = [String]()
或者你可以用

 var denominationValues: [String] = []

您可以使用标准库中名为
map(:)
的高阶转换函数。此函数循环遍历一个集合,并提供对每个元素的访问权,并对其应用转换,然后返回一个新集合,其中包含转换后的元素

var denominationValues = tariffPackageDetailsArray[indexPath.row].tariffPlanDenominationAndProductId?.map { $0.value }

如果需要附加一些值,则应该声明和初始化数组

var array = [Int]() // Declaring and initializing in one line

var array: [Int]? // Declaring array
array = [Int]() //initializing array
只有将数组值本身分配给所声明的数组时,才可以仅声明数组而不初始化

var array: [Int]?
var array1 = [1, 2, 3, 4]
array = array1
请阅读主题。既然你的答案涵盖了这个问题,那么就值得解释一下细节。