2016-02-12 90 views
2

其餘我有一個代碼像以下:跳過零值,並保持執行的代碼

for index in 0..<parts.count { 
let title = parts[index].title 
titleArray.append(title) 
} 

我有稱爲部件的陣列。有些部分有標題,有些則沒有。所以如果我運行代碼,它總是失敗,因爲在某些索引處會有nil值。

我該如何構建這個附加現有標題?我正在考慮使用警衛,但我不知道如何實施它。

+0

不可能使用if-else? – jo3birdtalk

回答

2

你需要的是一個if let statment檢查,如果標題是nil與否,就像這樣:

for index in 0..<parts.count { 
    if let title = parts[index].title { 
     titleArray.append(title) 
    } 
} 
2

喜歡的東西(代碼直接輸入到瀏覽器中,可能有錯別字)

for part in parts { 
    titleArray.append(part.title ?? valueToUseForNilTitle) 
} 

您也可以完全跳過零條目

for part in parts where part.title != nil { 
    ... 
} 

或如果你想變得有點票友

titleArray = parts.flatMap { $0.title } 
+0

爲什麼'$ 0?.title'中的問號? –

+0

固定:)忘記零件本身不是可選 –

0

您可以通過枚舉陣列更容易做到這一點...

for part in parts where part.title != nil { 
    ... 
} 
+0

它在part.title上引發錯誤,因爲該值對於某些零件已經爲零。任何想法來改善這一點? – Kahsn

+0

@Kahsn是否在循環中添加了位?哪裏位確保每個part.title不是零 – Fogmeister

+0

是的,我做到了。這似乎是拋出一個錯誤:/ – Kahsn

2
titleArray += parts.flatMap { $0.title } 

這應該是足夠的。