这是我的情景
让arrayA = [ObjectA]
让arrayB = [ObjectB]arrayA.count = arrayB.count
ObjectA!= ObjectB
objectA.someProperty = objectB.someOtherProperty
我想基于公共属性值有条件地将arrayA中的对象映射到arrayB中的对象,但我不确定如何执行此操作。
答案 0 :(得分:0)
我不确定你的意图,但你可以这样写:
class ObjectA {
var someProperty: String
init(someProperty: String) {
self.someProperty = someProperty
}
}
class ObjectB {
var someOtherProperty: String
init(someOtherProperty: String) {
self.someOtherProperty = someOtherProperty
}
}
let arrayA: [ObjectA] = [
ObjectA(someProperty: "a"),
ObjectA(someProperty: "b"),
ObjectA(someProperty: "c"),
]
let arrayB: [ObjectB] = [
ObjectB(someOtherProperty: "A"),
ObjectB(someOtherProperty: "B"),
ObjectB(someOtherProperty: "C"),
]
assert(arrayA.count == arrayB.count)
zip(arrayA, arrayB).forEach{ objectA, objectB in objectA.someProperty = objectB.someOtherProperty }
或者只是使用for-in:
for i in arrayA.indices {
let objectA = arrayA[i]
let objectB = arrayB[i]
objectA.someProperty = objectB.someOtherProperty
}
我不知道除上述之外的任何其他更简单的符号。
答案 1 :(得分:0)
以下是我如何管理这个:
for objectA in arrayA {
let someProperty = objectA.someProperty
for objectB in arrayB {
if objectB.someOtherProperty == someProperty {
// run code that maps objectB to objectA
}
}
}