ios – 如何制作一个包含特定值的Swift词典?

ios – 如何制作一个包含特定值的Swift词典?,第1张

概述通常我会像这样创建我的 swift字典: var myDict: [String: String] 但是,我如何创建一个可以包含值,只有String或Bool的Dictionary? 如果我像下面的代码一样声明字典 var myDict: [String: Any] 然后我的数组现在能够容纳任何我不想要的对象.有没有办法声明Dictionary只接受String和Bool值类型? [编辑] – 用 通常我会像这样创建我的 swift字典:

var myDict: [String: String]

但是,我如何创建一个可以包含值,只有String或Bool的Dictionary?

如果我像下面的代码一样声明字典

var myDict: [String: Any]

然后我的数组现在能够容纳任何我不想要的对象.有没有办法声明Dictionary只接受String和Bool值类型?

[编辑] –
用例是:我需要有一个键和值的字典.但我只想将值限制为Strings或Bools.没有其他的.目标是最终使用此Dictionary转换为JsON格式以发送到某个服务器.基于下面的答案,我唯一的选择是枚举还是类/结构?我想知道是否有办法让Bool和String符合某些协议?

这个想法可能是这样声明字典

var myDict : [String: stringOrBool]

并填写这样的字典

myDict["firstKeyStringValue"] = "my first string value" // This should workmyDict["firstKeyBoolValue"] = true // This should workmyDict["someOtherKey"] = 123 // This should fail

编辑2
根据下面的答案,我选择了协议方法,因为它在语法上更容易.但正如鲶鱼在评论中提到的那样,它可能会占用更多的内存.

解决方法
protocol StringOrBool {}extension Bool: StringOrBool {}extension String: StringOrBool {}var myDict: [String : StringOrBool] = [:]myDict["testKey"] = "sd"   // worksmyDict["testKey2"] = false // worksmyDict["testKey2"] = 2     // fails
总结

以上是内存溢出为你收集整理的ios – 如何制作一个包含特定值的Swift词典?全部内容,希望文章能够帮你解决ios – 如何制作一个包含特定值的Swift词典?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1071124.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存