gpt4 book ai didi

ios - 无法使用参数列表 '((_) -> _)' 调用筛选器 [已实现可等式]

转载 作者:行者123 更新时间:2023-11-29 02:01:46 25 4
gpt4 key购买 nike

我尝试在数组上使用过滤器,但我不断收到此错误。我检查了之前的答案,但我已经在我的对象上实现了“equatable”。

顺便问一下,这个错误到底是什么意思?

 // trying to use filter
var distance_array = [
FilterOption(title: "0.5 miles", value:500, currentSetting: false)...]
var filtered_distance: [FilterOption]!
filtered_distance = distance_array.filter({ ($0.currentValue == true) })


// FilterOption Class
class FilterOption: NSObject, Equatable {

var title:String!
var value: AnyObject?
var currentSetting: Bool!

init(title:String, value:AnyObject?, currentSetting:Bool){
self.title = title
self.value = value
self.currentSetting = currentSetting
}

class func convertDictionaryToFilterOption(dict:Dictionary<String, String>) -> FilterOption{
return FilterOption(title:dict["name"]!, value:dict["code"]!, currentSetting: false)
}

func == (lhs: FilterOption, rhs: FilterOption) -> Bool {
var title = (lhs.title == rhs.title)
var setting = (lhs.currentSetting! == rhs.currentSetting!)

return title && setting
}

最佳答案

那个编译器错误有点误导。如果您真的要测试一个 FilterOption 是否等于另一个(在比较 filter 闭包中的对象时出现的常见问题),那么您必须使其符合Equatable。但这不是这里的问题。

在本例中,问题只是代码引用了 currentValue,而不是 currentSetting。如果解决这个问题,编译器错误就会消失。


顺便说一句,您可以简化 filter 语句:

let filteredDistance = distanceArray.filter { $0.currentSetting }

currentSetting 已经是一个 Bool,所以如果您要测试它是否为 true,您可以直接返回它。还有一些无关的括号。

关于ios - 无法使用参数列表 '((_) -> _)' 调用筛选器 [已实现可等式],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30282330/

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