arrays - 无法将类型“[dataModel]”的值转换为预期的参数类型“(dataModel) throws -> Bool”
问题描述
出于某种原因,我无法比较 2 个不同的数组,例如:
if (self.data.contains(where: self.compareData)){
}
抛出:
无法将类型“[dataModel]”的值转换为预期的参数类型“(dataModel) throws -> Bool”
并尝试使用它们进行比较==
也会引发错误Binary operator '==' cannot be applied to operands of type '((dataModel) throws -> Bool) throws -> Bool' and '[dataModel]'
数组的格式为:
var data : [dataModel] = [dataModel] ()
var compareData : [dataModel] = [dataModel]()
我正在检查该数组是否设置为在替换数据和更新表之前发送的相同数组。
编辑:这是数据模型代码:
class dataModel {
var teamName : String = ""
var aboutTeams : String = ""
// var rate : String = "5" // team Rating
var messageID : String = ""
}
解决方案
那是因为您尝试使用的功能需要 NSPredicate。
检查一个数组是否包含另一个数组的子集的一种方法是执行以下操作:
var dataSet = Set(data)
var compareDataSet = Set(compareData)
if compareDataSet.isSubsetOf(dataSet) {
// Do something
}
编辑:您的班级需要符合 equatable
class dataModel: Equatable {
var teamName : String = ""
var aboutTeams : String = ""
// var rate : String = "5" // team Rating
var messageID : String = ""
override func isEqual(_ object: Any?) -> Bool {
if let object = object as? dateModel {
return self.teamName == object.teamName && self.aboutTeams == object.aboutTeams && self.messageID == object.messageID
} else {
return false
}
}
}
推荐阅读
- python - 为什么我使用 Tenserflow 和 Keras GPU 的模型出现 OOM 错误?
- javascript - 使用nodejs express mysql登录系统
- python - 分页在弹性搜索中如何工作?
- linux - 如何创建和运行 Docker 容器
- javascript - 返回ajax响应html的内部html值
- flutter - Flutter - 将下拉表单字段转换为自动完成表单字段
- java - 正则表达式查找带有 __ 和多个 _ 的字符串,然后 __ 以获得所需的输出
- vaadin - Vaadin:标签以一种非常奇怪的方式显示 - 这是故意的吗?
- relational-database - 如何在 Strapi 中发布带有 fk 数据的记录?
- xaml - 如何防止 XAML Editor.Text 中的硬换行?