其餘我有一個代碼像以下:跳過零值,並保持執行的代碼
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