如何将用户记录存储到Swift Dictionary中,并通过两种类型的键对其进行索引:userID和firstName?有可能吗?
如果删除了一个值,则表达式users[aUserID]和user[aFirstName]都应该返回nil。
发布于 2018-04-02 19:35:58
字典不关心唯一的值,他们只关心唯一的键。因此,您可以在字典中拥有任意多个相同的值,只要它们的键都不同即可。
我解决问题的方法是隐藏所有必要的逻辑,以便在包装器类中保持字典键的同步:
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
}
}https://stackoverflow.com/questions/49609960
复制相似问题