【发布时间】:2018-07-27 08:31:30
【问题描述】:
我有 3 个模型和各自的数组
struct A {
var id: String
var bId: String
var cId: String
}
struct B {
var id: String
}
struct C {
var id: String
}
let aList: [A] = [.......] // 100 elements
let bList: [B] = [.......] // 200 elements
let cList: [C] = [.......] // 300 elements
现在我需要 struct 'FilterModel' 的对象数组,它将通过迭代 'bList' 和 'cList' 过滤strong>aList'
struct FilterModel {
var objA: A
var objB: B?
var objC: C?
init(objA: A,
objB: B? = nil,
objC: C? = nil) {
self.objA = objA
self.objB = objB
self.objC = objC
}
}
So far i have tried like this
var filterModels: [FilterModel] = []
for aModel in aList {
let filterBModel = bList.filter { $0.id == aModel.bId }.first
let filterCModel = cList.filter { $0.id == aModel.cId }.first
let model = FilterModel(objA: aModel,
objB: filterBModel,
objC: filterCModel)
filterModels.append(model)
}
是否有任何优化或更好的方法,因为它需要太多时间?
【问题讨论】:
-
首先,将
bList.filter { $0.id == aModel.bId }.first改为bList.first { $0.id == aModel.bId }。但无论如何,性能会很糟糕。 -
从哪里得到 bList 和 cList 数组?你正在创造它们?
-
A. bId&B.id之间有关系吗? -
@LalKrishna:我的代码中已经提到
标签: ios arrays swift algorithm