arrays - 比较 Swift 中的两个对象数组
问题描述
我有两个不同大小的对象数组。第一个带有旧数据,第二个带有来自服务器的更新数据(包括旧数据和新数据),数据可以混合。我想了解这些数组之间的区别。
我的课
class Station {
var dateOfIssue: Date
var region: String
var locality: String
var bsName: String
var freqIn: String
var freqOut: String
var networkType: String
var provider: String
var bsUsableName: String
...
}
我要比较的数组(示例)
var a = [Station]()
var b = [Station]()
for _ in 0...5 {
a.append(Station(someRandomStationValue...)
}
b = a
for _ in 0...7{
b.append(Station(someRandomStationValue...) //array "b" will contain all that array "a" contains and some new values
}
如何比较这些数组,比较它们之间的所有字段并获得一个有差异的新数组(如在 java: 中b.removeAll(a)
)?
解决方案
您可以使用Set
which 提供内置.subtract()
和.subtracting()
方法来删除两个集合中的公共条目
struct Station: Hashable,CustomStringConvertible {
var id: Int
var region: String
var locality: String
var bsName: String
// Just to provide a pretty print statement
var description: String {
return "ID: \(id) | region: \(region) | locality: \(locality) | bsName: \(bsName)"
}
}
var stations1 = Set<Station>()
var stations2 = Set<Station>()
for currentNumber in 0...3 {
stations1.insert(Station(id: currentNumber, region: "abc", locality: "abc", bsName: "abc"))
}
for currentNumber in 0...5 {
stations2.insert(Station(id: currentNumber, region: "abc", locality: "abc", bsName: "abc"))
}
// Caluculating the difference here
print(stations2.subtracting(stations1))
推荐阅读
- sql - 使用别名变量的交叉表
- c# - asp.net 服务器标签在迭代中不起作用
- php - Codeigniter 将数据库值分配给变量
- modulo - 寻找非常大的数的余数
- node.js - 如何使用背景光栅图像将 svg 转换为 png(在 bash 或 nodejs 中)?
- delphi - 来自客户端中 RESTRequest 的参数未传递给服务器 - Delphi
- graphql - GraphQL 模式拼接 - 无法读取未定义的属性“args”
- php - 当我单击注册时,它会以文本形式打开 php 文件,而不是向数据库中添加值?
- image-processing - 使用霍夫曼树中的所有 ASCII 字符
- java - Java中的浮点数据类型精度