如何将字符串从 url 转换为字典?我尝试了以下方法,效果很好,但我想要一种更干净的方法

问题描述 投票:0回答:1

所以我从 url 获取这个字符串: 开始:VCAMERA 方法:发布 开始:活动

最后我想要一本字典,例如 ["BEGIN": "VCAMERA"]。 这是我当前的实现 -

        let string = try String(contentsOf: url, encoding: .utf8)
        let wordArray = string.components(separatedBy: CharacterSet.newlines)
        var dict = [String: String]()
        for keyValue in wordArray {
            let components = keyValue.components(separatedBy: ":")
            if components.count > 1 {
                dict[components[0]] = components.last?.trimmingCharacters(in: .whitespacesAndNewlines)
            }
        }

这段代码给出了所需的输出,但我想知道是否有更干净、更好的方法。`

ios arrays swift dictionary
1个回答
0
投票

从你的问题中不清楚你想如何处理重复项,但你的代码只是覆盖它们。如果是这样,这是一种更紧凑的方法,与您的类似:

let keyValues = string.components(separatedBy: CharacterSet.newlines)
    .map { $0.split(separator: ":") } // Split each element on :
    .compactMap { // return (key, value) pairs, throwing away any malformed rows
        if $0.count > 1 { ($0[0], $0[1]) } else { nil }
    }

// combine pairs into a dictionary, keeping the new value if duplicates are found
let dict = Dictionary(keyValues, uniquingKeysWith: { _, new in new } )

如果您的代码非常简单并且不需要非常健壮,我只推荐这样的代码。在健壮的代码中,您需要检查错误并处理它们,而不是以这种方式忽略它们。

© www.soinside.com 2019 - 2024. All rights reserved.