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

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

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...