繁体   English   中英

填充自定义对象的数组而不将其包装在Swift 3中

[英]Populate a custom objects' array without wrapping it in Swift 3

如前所述,我声明了这个数组:

var Questionari:[Questionario]!

然后,我将尝试填充它:

for questionario in questionari{
    let q=Questionario.init(json: questionario)               
    self.Questionari!.append(q!)                     
}

结果出现此错误:

fatal error: unexpectedly found nil while unwrapping an Optional value

如果我尝试以这种方式填充它:

var Questionari:[Questionario]?
for questionario in questionari{
    let q=Questionario.init(json: questionario)                
    self.Questionari?.append(q!)

}

可以正常工作,但数组仍将为空(如调试器所见,在每个循环迭代中为零)。

questionari数组已声明但未初始化。

您必须对其进行初始化(非可选):

var questionari = [Questionario]()

您可以使用flatMap函数安全地填充它。 它忽略nil值。 不需要循环:

self.questionari = questionari.flatMap { Questionario(json: $0) }

旁注:变量名称应以小写字母开头(然后,您可能必须重命名本地questionari数组)。

作为@vaidan答案,您必须初始化Questionari数组,并解开Questionario对象,然后替换此行

 let q=Questionario.init(json: questionario)

                                self.Questionari!.append(q!)

 if let q=Questionario.init(json: questionario)
  {   self.Questionari.append(q)}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM