我有一本这样的字典
["Price": ["$00.00 - $200.00", "$200.00 - $400.00", "$600.00 - $800.00"]]
现在我将所有字典值存储在数组中,如下所示
var priceRange: [String] = [String]()
if let obj = currentFilters["Price"] as? [String] {
self.priceRange = obj
printD(self.priceRange)
}
并通过使用Array.first
and Array.last
方法我将获取数组的第一个元素和最后一个元素的值。
let first = priceRange.first ?? "" // will get("[$00.00 - $200.00]")
let last = priceRange.last ?? "" // will get("[$600.00 - $800.00]")
但我真正想要的是我想要$00.00 from first and $800 from last进行所需的组合[$00.00 - $800.00].
我怎样才能做到这一点。请帮忙?
你需要采取first
value ("$00.00 - $200.00"
), then last
value ("$600.00 - $800.00"
),然后将它们分割为“-
" 符号并分别取第一个和最后一个值并将其组合为单个字符串。
let currentFilters = ["Price": ["$00.00 - $200.00", "$200.00 - $400.00", "$600.00 - $800.00"]]
var priceRange: [String] = [String]()
if let obj = currentFilters["Price"] as? [String] {
priceRange = obj
print(priceRange)
}
let first = priceRange.first!.split(separator: "-").first!
let last = priceRange.last!.split(separator: "-").last!
let range = "\(first) - \(last)"
为了更好地处理选项,您可以使用这个(NB,我遵循我的过度描述性编码风格。这段代码可以更紧凑)
func totalRange(filters: [String]?) -> String? {
guard let filters = filters else { return nil }
guard filters.isEmpty == false else { return nil }
guard let startComponents = priceRange.first?.split(separator: "-"), startComponents.count == 2 else {
fatalError("Unexpected Filter format for first filter") // or `return nil`
}
guard let endComponents = priceRange.last?.split(separator: "-"), endComponents.count == 2 else {
fatalError("Unexpected Filter format for last filter") // or `return nil`
}
return "\(startComponents.first!) - \(endComponents.last!)"
}
let range = totalRange(filters: currentFilters["Price"])
let range1 = totalRange(filters: currentFilters["Not Exists"])
将上面的代码传递到游乐场。它可以写得更短,但为了描述性,我保持这样
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)