我在 plist 中有一个包含 2 个整数值的数组。使用这段代码我可以毫无问题地读取第一个值
let mdic = dict["m_indices"] as? [[String:Any]]
var mdicp = mdic?[0]["powers"] as? [Any]
self.init(
power: mdicp?[0] as? Int ?? 0
)
不幸的是,一些 plist 没有第二个索引值。所以调用这个
power: mdicp?[1] as? Int ?? 0
返回零。我如何检查那里是否有索引,以便它只在存在值时获取值?我试图将它包装在一个 if-let 语句中
if let mdicp1 = mdic?[0]["powers"] as? [Any]?, !(mdicp1?.isEmpty)! {
if let mdicp2 = mdicp1?[1] as! Int?, !mdicp2.isEmpty {
mdicp2 = 1
}
} else {
mdicp2 = 0
}
但到目前为止,我的尝试导致了多个控制台错误。
最佳答案
如果你正在处理整数数组并且只担心前两项,你可以这样做:
let items: [Int] = [42, 27]
let firstItem = items.first ?? 0
let secondItem = items.dropFirst().first ?? 0
您是否真的想使用 nil 合并运算符 ??
来使缺失值的计算结果为 0
,或者只是将它们保留为可选值,这取决于您。
或者你可以这样做:
let firstItem = array.count > 0 ? array[0] : 0
let secondItem = array.count > 1 ? array[1] : 0
关于ios - 检查数组是否包含 Swift 中的索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41630944/