【发布时间】:2018-07-22 14:43:35
【问题描述】:
我有两个由不同结构组成的数组,它们在数组的不同位置都有相同的信息。
我尝试使用 if 语句创建一个双 for-in 循环来检查它们是否是相同的值,但是我在 PHP 等其他语言中执行此操作的方式不起作用。
请帮帮我,这是我目前所得到的:
单一文件
struct oneStruct {
var oneTitle: String
var onePic: UIImage?
var oneCategory: String
}
class OneSingleton {
static let sharedInstance = OneSingleton()
private init() {}
var oneArray: [OneStruct] = [//you get the gist, this is full of array stuff]
}
单两个文件
struct TwoStruct {
var twoName: String
var twoPic: UIImage?
var twoSubject: String
var twoStuff1: String
// etc. I can't get into much more here, sorry.
}
class TwoSingleton {
static let sharedInstance = TwoSingleton()
private init() {}
var twoArray: [TwoStruct] = [//you get the gist, this is full of array stuff as well]
}
视图控制器
//the singleton stuff is needed
var oneArray = [OneSingleton.sharedInstance.oneArray]
var twoArray = [TwoSingleton.sharedInstance.twoArray]
var filterArray: [TwoStruct] = []
override func viewDidLoad() {
super.viewDidLoad()
for two in twoArray {
for one in oneArray {
if two == one {
filterArray.append(contentsOf: two)
}
}
}
}
它给了我一个编译错误
二元运算符“==”不能应用于“[TwoStruct]”和“[OneStruct]”类型的操作数
我希望这一切都有意义。
提前致谢。
【问题讨论】:
-
请在您的问题中包含
OneStruct和TwoStruct的声明。另外,我假设oneArray的类型是[OneStruct]其中twoArray是[TwoStruct]? -
好的,给我一点时间来编辑 :D 没错,oneArray 是 OneStruct,twoArray 是 TwoStruct。
-
我已经进行了这些更改,我要检查的两个相同的元素是 oneCategory 和 twoSubject。
-
@TMI 使它们成为一个结构并为比较参数实现 Eqauatble,我将编辑
-
不,它们必须不同。除了类别和主题之外,它们根本不相关。