我有这样的字典
["Price": ["$00.00 - $200.00", "$200.00 - $400.00", "$600.00 - $800.00"]]
Run Code Online (Sandbox Code Playgroud)
现在我将所有字典值存储在这样的数组中
var priceRange: [String] = [String]()
if let obj = currentFilters["Price"] as? [String] {
self.priceRange = obj
printD(self.priceRange)
}
Run Code Online (Sandbox Code Playgroud)
通过使用Array.first和Array.last方法,我将得到我的数组的第一个元素和最后一个元素的值.
let first = priceRange.first ?? "" // will get("[$00.00 - $200.00]")
let last = priceRange.last ?? "" // will get("[$600.00 - $800.00]")
Run Code Online (Sandbox Code Playgroud)
但我真正想要的是我想要的$ 00.00,从第一和$ 800从去年作出的所需组合[$点- $ 800.00] .
我怎样才能做到这一点.请帮忙?
您需要先获取firstvalue ( "$00.00 - $200.00"),然后获取lastvalue ( "$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)"
Run Code Online (Sandbox Code Playgroud)
为了更好地处理选项,你可以使用这个(注意,我遵循我的过度描述性编码风格。这个代码可以更紧凑)
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"])
Run Code Online (Sandbox Code Playgroud)
将上面的代码传递到游乐场。它可以写得更短,但为了描述性我保持这样