gpt4 book ai didi

ios - 如何在 Swift 中放置数组的第一个和最后一个元素

转载 作者:搜寻专家 更新时间:2023-10-30 21:52:26 25 4
gpt4 key购买 nike

我有这样的字典

["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.firstArray.last 方法,我将获得数组的第一个元素和最后一个元素的值。

let first = priceRange.first ?? "" // will get("[$00.00 - $200.00]")
let last = priceRange.last ?? "" // will get("[$600.00 - $800.00]")

但我真正想要的是我想要first$00.00last$800来制作[$00.00 - $800.00] 的所需组合。

我该怎么做。请帮忙?

最佳答案

您需要取第一个值("$00.00 - $200.00"),然后是最后一个值("$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)"

为了更好地处理可选值,您可以使用它(注意,我遵循我过度描述的编码风格。这段代码可以更紧凑)

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"])

将上面的代码传递到 playground。它可以写得更短,但为了描述性,我保持这样

关于ios - 如何在 Swift 中放置数组的第一个和最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53151493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com