【发布时间】:2017-02-16 17:29:37
【问题描述】:
我的两个对象(Obj1 和 Obj2)定义如下:
class Obj1: NSObject {
var code : String
init(code: String) {
self.code = code
}
}
class Obj2: NSObject {
var codeObj : Obj1
var value : Double
init(primary: Currency, value: Double) {
self.primary = primary
self.value = value
}
}
我有一个 Obj2 数组,我正在尝试更新数组 [Obj2],使该数组仅包含其 codeObj.code 相等的 Obj2。包括 Equatable 协议会对此有所帮助吗?
我试过这个:
let filteredArray = array1.filter( { (c1: Obj2) -> Bool in
return conversion2.contains(where: { (c2: Obj2) -> Bool in
return c1.codeObj.code == c2.codeObj.code;
})
}) + array2.filter( { (c2: Obj2) -> Bool in
return conversion1.contains(where: { (c1: Obj2) -> Bool in
return c1.codeObj.code == c2.codeObj.code;
})
})
有办法简化吗?
【问题讨论】:
-
但等于什么?如果乘以
Obj有相同的代码会发生什么?例如,如果您有多个Obj和此代码["aaa", "aba", "aaa", "aba", "abc", "xyz", ard"],输出是什么?输出会是["aaa", "aaa", "aba", "aba"]吗? -
而且由于
Obj1是一个类,你需要区分相等和相同。 -
[Obj2] in such a way that the array only contains Obj2 whose codeObj.code are equal等于什么? -
@mhergon 是的@DanielT 我试图通过查看
codeObj.code是否与[Obj2] 相等来过滤数组@Alexander [Obj2] 将拥有其codeObj.code等于的Obj2codeObj.code的其他元素。像一个排序数组