gpt4 book ai didi

ios - 将唯一对象添加到数组

转载 作者:行者123 更新时间:2023-11-28 13:02:24 24 4
gpt4 key购买 nike

我已经阅读了所有关于 Set 的内容,但它们不符合要求,因为我的对象不可散列(这很常见)。

我有一个Product

class Product: Object {

dynamic var sku: String!
dynamic var name: SomeUnhashableType!
dynamic var weight: String!
}

let uniqueProductArray = [productOne, productTwo, productThree]

uniqueProductArray.append(productOne)

我读过有关使用 containsindexOffilter 等的内容。但它们都使用谓词,我想要一个非-谓词法。

阻止重复对象被附加到数组的最优雅的方法是什么?

最佳答案

通过将该协议(protocol)添加到定义中并为您的类实现==,使您的类Equatable。然后你可以使用 contains 而不使用谓词版本:

class Product: Object, Equatable {
dynamic var sku: String!
dynamic var name: String!
dynamic var weight: String!
}

func == (lhs: Product, rhs: Product) -> Bool {
return lhs.sku == rhs.sku && lhs.name == rhs.name && lhs.weight == rhs.weight
}

let productOne = Product()
productOne.sku = "one"
productOne.name = "name"
productOne.weight = "heavy"

let productTwo = Product()
productTwo.sku = "two"
productTwo.name = "name"
productTwo.weight = "heavy"

let productThree = Product()
productThree.sku = "three"
productThree.name = "name"
productThree.weight = "heavy"

var uniqueProductArray = [productOne, productTwo]

if !uniqueProductArray.contains(productThree) {
uniqueProductArray.append(productThree)
}

关于ios - 将唯一对象添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33559528/

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