2017-06-20 60 views
-2

我从服务器获得了像这样的字符串值。Swift 3:如何阅读“可选(可选(stringValue))”而不可选?

let filename = "\(eventList[index]["filename"])" 

但我得到可选(可选(stringValue的))值。 所以我改变了这个。

let filename = "\(eventList[index]["filename"]!)" 

然后,我可选(stringValue的)得到的值。 我不能再做这个错误。 如何在没有任何可选的情况下读取文件名?

+1

使用多了一个“**!**”支架后关闭。但是,如果使用**语法,则更好。 –

+0

解包 - 又名 - 正确地控制 - 可选项。 – vadian

+0

谢谢你的帮助! – LoveCode

回答

0

使用if-let语法来解开可选:

if let fileName = eventList[index]["filename"] { 
    // use fileName 
} 
0

eventList[index]给定索引处访问一个数组项。您所指的项目似乎是可选字典,因此在访问字典项目之前需要解开:eventLists[index]!(假设它存在并且当然有效,否则它会崩溃)

然后您可以访问字典require值是一个可选的还有:

eventLists[index]!["fileName"]! 

假设你的名单是有效的,你会得到想要的String对象。

我建议使用安全检查(if-let或其它变体),以防止崩溃