我也不知道为什么我会出现此错误。
问题代码是在这里
for i in 0..<itemDataJson?.count {
imageUrls.append(appDelegate.itemDataJson![i]["image_url"].string!)
}
当我 print(itemDataJson?.count)
Optional(1),它输出。
我到底做错了?
谢谢。
它印刷 Optional(1),因为变量 itemDataJson 是可以为 null,所以计数会因此必须是可以为 null,因为我们不知道是否 itemDataJson 其实有一个值。
我看到您的代码中的主要问题是你是力展开变量。部队展开变量是一种代码味道 (通常,虽然我自己做从时间到时间,但你必须要小心)。
当你强迫打开一个变量,你需要问自己一个问题,"我想应用程序如果此变量为零的崩溃在这里吗?"。如果答案是肯定的然后再用武力打开是可以接受的否则,你应该创建一个非可以为 null 的变量或如果这是不可能的你应该使用中的守护语句 swift
。
这可以使用像这样︰
guard let itemDataJson = itemDataJson else {
// itemDataJson was null do something
return
}
您可以使用 if let
建设,但要小心金字塔的厄运,如果你不使用 if let
构建正确。看到这里使用它正确,或使用警卫队声明。
我建议如果你这样做并不已经签出文档上件。