Вы можете создать словарь для fixedContentTypeID
из generalComposition
:
let order = generalComposition.reduce(into: [Int: Int]()) { result, value in
result[value.fixedContentTypeId] = value.orderBy
}
Теперь у вас есть эффективный способ поиска значения orderBy
для данного typeId
в вашем массиве FixedContentType
объектов. Вы можете использовать это для сортировки:
fixedContentType.sort {
(order[$0.typeId] ?? 0) < (order[$1.typeId] ?? 0)
}
Кстати, ваш typeId
- это String
, а fixedContentTypeId
- это Int
. Я предполагаю, что это была опечатка, введенная при подготовке вопроса, и что они действительно Int
. Если бы это были действительно разные типы (что было бы странно), решение было бы схожим, хотя вам пришлось бы делать некоторые преобразования. Но я не хотел туда ехать, если вы не подтвердили, что это именно то, что вы модель.
Но, учитывая, что ваш typeId
действительно является String
, вы можете сделать свой словарь [String: Int]
:
let order = generalComposition.reduce(into: [String: Int]()) { result, value in
result[String(value.fixedContentTypeId)] = value.orderBy
}