gpt4 book ai didi

swift - 调用中的额外参数 'where'

转载 作者:行者123 更新时间:2023-11-30 10:40:53 25 4
gpt4 key购买 nike

我正在努力从 swift 数组中删除一个项目,但我不确定为什么会收到此错误。

我的代码是:

var itemToRemove = list[indexPath.item]
selectedCasesArray.removeAll(where: { $0 == itemToRemove })

该代码位于 CollectionView 的 didSelect 函数中。

itemToRemove 的类型为 CaseFormatselectedCaseArray 的类型为 [CaseFormat]

为什么这不起作用? Apple 的文档允许在 Swift 4.2+ 中使用它,而我使用的是 Swift 5

<小时/>

我被要求展示 CaseFormat 是如何声明的:

class CaseFormat {

var id : Int
var imageName : String
var isSelected : Bool
var solve : String
var testTicks : Int

init(id : Int, imageName : String, isSelected : Bool, solve : String, testTicks : Int) {
self.id = id
self.imageName = imageName
self.isSelected = isSelected
self.solve = solve
self.testTicks = testTicks
}

}

最佳答案

由于 CaseFormat 不是 Equatable,因此您不能将 == 与它一起使用。

这是一个类,所以也许您想直接使用 === 比较引用?

selectedCasesArray.removeAll(where: { $0 === itemToRemove })

如果你想真正使用==,你必须实现Equatable,例如:

extension CaseFormat: Equatable {
public static func == (lhs: CaseFormat, rhs: CaseFormat) -> Bool {
return lhs.id == rhs.id
}
}

当然,确切的行为应该取决于您的用例。

关于swift - 调用中的额外参数 'where',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56816209/

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