其余我有一个代码像以下:跳过零值,并保持执行的代码
for index in 0..<parts.count {
let title = parts[index].title
titleArray.append(title)
}
我有称为部件的阵列。有些部分有标题,有些则没有。所以如果我运行代码,它总是失败,因为在某些索引处会有nil值。
我该如何构建这个附加现有标题?我正在考虑使用警卫,但我不知道如何实施它。
其余我有一个代码像以下:跳过零值,并保持执行的代码
for index in 0..<parts.count {
let title = parts[index].title
titleArray.append(title)
}
我有称为部件的阵列。有些部分有标题,有些则没有。所以如果我运行代码,它总是失败,因为在某些索引处会有nil值。
我该如何构建这个附加现有标题?我正在考虑使用警卫,但我不知道如何实施它。
你需要的是一个if let
statment检查,如果标题是nil
与否,就像这样:
for index in 0..<parts.count {
if let title = parts[index].title {
titleArray.append(title)
}
}
喜欢的东西(代码直接输入到浏览器中,可能有错别字)
for part in parts {
titleArray.append(part.title ?? valueToUseForNilTitle)
}
您也可以完全跳过零条目
for part in parts where part.title != nil {
...
}
或如果你想变得有点票友
titleArray = parts.flatMap { $0.title }
为什么'$ 0?.title'中的问号? –
固定:)忘记零件本身不是可选 –
您可以通过枚举阵列更容易做到这一点...
for part in parts where part.title != nil {
...
}
它在part.title上引发错误,因为该值对于某些零件已经为零。任何想法来改善这一点? – Kahsn
@Kahsn是否在循环中添加了位?哪里位确保每个part.title不是零 – Fogmeister
是的,我做到了。这似乎是抛出一个错误:/ – Kahsn
titleArray += parts.flatMap { $0.title }
这应该是足够的。
不可能使用if-else? – jo3birdtalk