首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Swift字典中为相同的值使用多个键?

如何在Swift字典中为相同的值使用多个键?
EN

Stack Overflow用户
提问于 2018-04-02 18:58:32
回答 2查看 1.2K关注 0票数 1

如何将用户记录存储到Swift Dictionary中,并通过两种类型的键对其进行索引:userIDfirstName?有可能吗?

如果删除了一个值,则表达式users[aUserID]user[aFirstName]都应该返回nil

EN

Stack Overflow用户

发布于 2018-04-02 19:35:58

字典不关心唯一的值,他们只关心唯一的键。因此,您可以在字典中拥有任意多个相同的值,只要它们的键都不同即可。

我解决问题的方法是隐藏所有必要的逻辑,以便在包装器类中保持字典键的同步:

代码语言:javascript
运行
复制
struct User {
    let userId: Int
    let firstName: String
    // more user properties
}

class UserDict {

    private var dict = [String: User]()

    subscript(key: String) -> User? {
        return dict[key]
    }

    subscript(key: Int) -> User? {
        return dict["\(key)"]
    }

    func add(_ user: User) {
        dict[user.firstName] = user
        dict["\(user.userId)"] = user
    }

    func remove(forKey key: String) {
        if let user = dict[key] {
            dict.removeValue(forKey: user.firstName)
            dict.removeValue(forKey: "\(user.userId)")
        }
    }

    func remove(forKey key: Int) {
        remove(forKey: "\(key)")
    }

    var count: Int {
        return dict.count / 2
    }
}
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49609960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档