【问题标题】:Xcode force me to use contains(where:) instead of contains()Xcode 强制我使用 contains(where:) 而不是 contains()
【发布时间】:2020-02-19 03:32:34
【问题描述】:

我想检查一个数组中是否已经包含一个项目,所以我喜欢这样:

let fItem = FilterItem(key: String(describing: key), value: valueStr)
if self.filter?.filters?.contains(fItem){
    //remove the item if contains, append if not
}

更多信息,self.filter?.filters? 是一个数组:

var filters: [FilterItem]? = []

FilterItem 是一个结构体:

struct FilterItem {
    var key: String;
    var value: String;
}

但是 Xcode 强迫我使用 contains(where:..) 而不是 contains() 错误:Missing argument label 'where:' in call。为什么?

【问题讨论】:

  • 你需要让你的结构符合 Equatable

标签: ios arrays swift


【解决方案1】:

您不能使用contains(_),因为FilterItem 对象数组不符合协议EquatableThis question and its answers 应该有助于解释它。基本上,数组元素不能直接用==相互比较,所以它们不符合Equatable

【讨论】:

  • 没问题。很高兴它有帮助:)
  • @Bad_Developer 好的,事实证明我已经提交了一个关于您收到的错误消息不正确的错误:bugs.swift.org/browse/SR-8934
猜你喜欢
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 2017-09-13
  • 2010-09-05
  • 1970-01-01
  • 2013-01-22
  • 2016-05-18
  • 1970-01-01
相关资源
最近更新 更多