ios – 如何在Swift中放入Array的第一个和最后一个元素

前端之家收集整理的这篇文章主要介绍了ios – 如何在Swift中放入Array的第一个和最后一个元素前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这样的字典
["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和Array.last方法,我将获得第一个元素的值和我的数组的最后一个元素.

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

但我真正想要的是我想先从$00.00和最后$800来制作所需的[$00.00 – $800.00]组合.

我怎样才能做到这一点.请帮忙?

解决方法

您需要取第一个值(“$00.00 – $200.00”),然后取最后一个值(“$600.00 – $800.00”),然后用“ – ”符号拆分它们,分别取第一个和最后一个值并将它组合成单个字符串.
let currentFilters = ["Price": ["$00.00 - $200.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"])

过去上面的代码到操场.它可以用更短的方式编写,但为了描述,我保持这样

原文链接:https://www.f2er.com/iOS/328282.html

猜你在找的iOS相关文章