1. Выровняйте arrayOfDict
, чтобы получить одиночный Dictionary
, используя flatMap(_:)
let combinedDict = arrayOfDict.flatMap{($0)}
2. Сгруппируйте элемент combinedDict
на основе key
, используя init(grouping:by:)
let groupedDict = Dictionary(grouping: combinedDict) { $0.key }
3. Получите formattedDict
используя mapValues(_:)
let formattedDict = groupedDict.mapValues { Array(Set($0.map { $0.value })) }
formattedDict
Вывод:
["pl": ["Ułatwienia dostępu"], "cn": ["为每个人而设计"], "br": ["Acessibilidade"], "default": ["Accessibility"], "hk_cn": ["輔助使用", "輔助"]]
Теперь вы можете запросить пользователя, используя formattedDict
, и спросить, какое значение сохранить для соответствующих ключей.
Изменить:
Согласно вашему комментарию, вы можете использовать allSatisfy(_:)
на formattedDict
, чтобы проверить, он содержит одиночный value
для каждого key
.
let formattedDict = groupedDict.mapValues { Set($0.map { $0.value }) }
if formattedDict.values.allSatisfy({ $0.count == 1 }) {
let newformattedDict = formattedDict.compactMapValues { $0.first }
} else {
//add your code to display data in table here...
}