通常我会像这样创建我的swift字典:
var myDict: [String: String]
但是,我如何创建一个可以包含值,只有String或Bool的Dictionary?
如果我像下面的代码一样声明字典
var myDict: [String: Any]
然后我的数组现在能够容纳任何我不想要的对象 . 有没有办法声明Dictionary只接受 String
和 Bool
值类型?
[EDIT] - 用例是:我需要一个键和值的字典 . 但我只想将值限制为Strings或Bools . 没有其他的 . 目标是最终使用此Dictionary转换为JSON格式以发送到某个服务器 . 基于下面的答案,我唯一的选择是枚举还是类/结构?我想知道是否有办法让Bool和String符合某些协议?
这个想法可能是这样声明字典
var myDict : [String: stringOrBool]
并填写这样的字典
myDict["firstKeyStringValue"] = "my first string value" // This should work
myDict["firstKeyBoolValue"] = true // This should work
myDict["someOtherKey"] = 123 // This should fail
Edit 2 基于下面的答案,我选择了协议方法,因为它在语法上更容易 . 但正如鲶鱼在评论中提到的那样,它可能会占用更多的内存 .
3 回答
你可以做点什么
然后让你的字典成为
有了这个枚举
您可以声明一个包含2个泛型类型值的值(例如
String
和Bool
) .然后你可以用第一个Type填充它(例如
String
)或与第二个(例如
Bool
)