gpt4 book ai didi

swift - 如何在字典映射中跳过 nil 键值对

转载 作者:搜寻专家 更新时间:2023-10-31 23:09:35 26 4
gpt4 key购买 nike

我正在使用来自 here 的自定义代码将 Dictionary 映射到 Dictionary:

extension Dictionary {
init(_ pairs: [Element]) {
self.init()
for (k, v) in pairs {
self[k] = v
}
}

func mapPairs<OutKey: Hashable, OutValue>(_ transform: (Element) throws -> (OutKey, OutValue)) rethrows -> [OutKey: OutValue] {
return Dictionary<OutKey, OutValue>(try map(transform))
}

func filterPairs(_ includeElement: (Element) throws -> Bool) rethrows -> [Key: Value] {
return Dictionary(try filter(includeElement))
}
}

我的字典是这样的:

[String: (TokenView, MediaModel?)]

并且需要映射到[String : MediaModel]

当前这段代码:

let myDict = strongSelf.tokenViews.mapPairs {($0.key, $0.value.1)}

映射到 [String : MediaModel?]

需要做的是,如果 MediaModel 在映射时为 nil,则不应将该键值对添加到最终字典中。我如何修改代码以适应这种情况?

最佳答案

您可以在字典上使用 reduce 来获取键/值,并根据从闭包返回的值构建一个新字典:

func mapPairs<OutKey: Hashable, OutValue>(_ transform: (Element) throws -> (OutKey, OutValue)) rethrows -> [OutKey: OutValue] {
return try self.reduce(into: [:]) { result, element in
let new = try transform(element)
result[new.0] = new.1
}
}

关于swift - 如何在字典映射中跳过 nil 键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45034913/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com