我在操场上有以下代码:

struct Car: Codable, Equatable, Identifiable {
    var id:Int
    var name:String
}
struct Dealer: Codable, Equatable, Identifiable {
    var id:Int
    var name:String
    var cars:[Car]
}
struct Response: Codable, Equatable, Identifiable {
    let id:UUID
    var dealers:[Dealer]
}

var result = Response(id:UUID(), dealers: [])

func setup() {
    
    
    // MOCK FOR NOW
    var dealers = [Dealer]()
    for n in 0..<15 {
        var cars = [Car]()
        for c in 0..<100 {
            cars.append(Car(id: c+n, name: "Car \(c)_\(n)"))
        }
        dealers.append(Dealer(id: n, name: "Dealer \(n)", cars: cars))
    }
    
    result = Response(id:UUID(), dealers: dealers)
}

setup()

//print("result: \(result)")

let searchResult = result.dealers.filter { dealer in
    dealer.name.contains("Dealer 0")
}

所以这是一系列的经销商,每个经销商都有一系列的汽车.

经销商和汽车都有一个名字:字符串财产.例如,在给定搜索字符串"car 23_0"的情况下,我想过滤掉result,这样包含该汽车的经销商将保留为区段标题(我正在使用它来驱动一个区段表),并显示汽车行……因此,我想要在此代码中构造的result辆汽车中按名称搜索汽车.如果我想搜索经销商,我可以很容易地这样做:

let searchResult = result.dealers.filter { dealer in
    dealer.name.contains("Dealer 0")
}

我不知道怎么用result上的名字搜索汽车.

我怎么才能过滤出result辆车中任何一辆不符合.contains("Cat 23_0")标准的车?

推荐答案

如果我理解正确的话,要在回复中找到具有特定名称的汽车经销商:

extension Response {
    func dealersForCar(name: String) -> [Dealer] {
        dealers.filter { $0.cars.contains { $0.name == name } }
    }
}

并从发牌者那里获得带有特定名称的卡片

extension Dealer {
    func cars(name: String) -> [Car] {
        cars.filter { $0.name == name }
    }
}

例如:

// to find dealers in the response
let searchedDealers = result.dealersForCar(name: "Car 67_12")

// to find cars in the dealer
searchedDealers.first?.car(name: "Car 67_12")

Swift相关问答推荐

如何分解阿拉伯字母?

如何将CodingKeys作为数组而不是枚举传递到类外部的函数中?

SwiftUI map 旋转

SWIFT计划计时器方法在时间间隔后未被调用

使用MKLocalSearch获取坐标

在SwiftUI中绘制形状的路径后填充形状

我如何在 swift 中的 viewdidload 之前进行委托?

在Swift中如何将NSUrl转换为本地路径URL

XCUITest 在 TearDown 期间随机失败-无法终止 com.bundle.id

SwiftUI Preview 不适用于 Core Data

如何更改任务栏 colored颜色 和 sf 符号 colored颜色 ?

使用 Swiftui 水平修剪 Shape()

.onTapGesture 不适用于 Stepper,仅适用于其文本

Xcode swift ui 错误KeyPathComparator仅在 macOS 12.0 或更高版本中可用

使用 swift 运行 pod install 时出错

Swift 2.0 最低系统版本要求(部署目标)

将 [String] 存储在 NSUserDefaults 中

如何在 Swift 中从字符串创建类的实例

我可以让#selector 引用 Swift 中的闭包吗?

iPhone 纵向和 iPad 横向的通用应用程序