2016-02-12 53 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 } 

这应该是足够的。