如何在swift中删除数组中的特定项?

时间:2018-03-28 15:30:11

标签: arrays swift xcode

我正在使用一个填充结构的数组:

struct CartModel: Codable {
    var product_id: Int
    var line_subtotal: Float
    var line_total: Float
    var line_tax: Float
    var line_subtotal_tax: Float
    var key: String
    var quantity: Int
}

    static var fullCart = [CartModel]()

现在我试图从数组中删除其中一个。 我尝试使用fullCart.index(of:),但它给了我以下错误:

  

参数标签'(of:,_:)'不匹配任何可用的重载

我希望使用fullCart.remove(at:),但由于无法找到正确的索引,我不知道如何删除正确的项目。

1 个答案:

答案 0 :(得分:1)

您还可以按index(where:)找到索引,然后从数组中删除项目:

if let index = fullCart.index(where: { $0.product_id == otherCartModel.product_id }) {
    fullCart.remove(at: index)
}

或符合Equatable协议并使用index(of:)

struct CartModel: Codable, Equatable {
    ...

    static func == (lhs: Self, rhs: Self) -> Bool {
        return lhs.product_id == rhs.product_id
    }
}

if let index = fullCart.index(of: otherCartModel) {
    fullCart.remove(at: index)
}