[英]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.