Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift3,如何在字典中添加任何对象?_Swift_Dictionary_Swift3 - Fatal编程技术网

Swift3,如何在字典中添加任何对象?

Swift3,如何在字典中添加任何对象?,swift,dictionary,swift3,Swift,Dictionary,Swift3,我把我的文件传送到Swift3,一本字典就像 var Detail: [String:[String:AnyObject]] = [ "0":["0":["number":0,"imageName":"40"]], "1":["0":["number":1,"imageName":"3setting"],"1":["number":1,"imageName":"3private"],"2":["number":1,"imageName":"3currency"]]

我把我的文件传送到Swift3,一本字典就像

var Detail: [String:[String:AnyObject]] = [
        "0":["0":["number":0,"imageName":"40"]],
        "1":["0":["number":1,"imageName":"3setting"],"1":["number":1,"imageName":"3private"],"2":["number":1,"imageName":"3currency"]],
        "2":["0":["number":1,"imageName":"3favourite"],"1":["number":1,"imageName":"3favourite"]],
        "3":["0":["number":1],"1":["number":1]],
        ]
我过去工作得很好,但今天它提醒了我

上下文类型“AnyObject”不能与字典文本一起使用

但是为什么它现在不起作用呢?
发生这种情况的原因和解决方法?

[String:Any]
而不是
[String:AnyObject]
,你会没事的

至于“发生了什么”:自动桥接消失(例如Int和NSNumber之间,或String和NSString之间)。因此,像
[“imageName”:“3setting”]
这样的文字词典被推断为
[String:String]
,并且不能在需要
[String:AnyObject]
的地方分配,因为字符串不是AnyObject。但是字符串肯定是Any,因为所有东西都是Any


您也可以通过将
[“number”:1作为NSNumber,“imageName”:“3set”作为NSString]
来解决这个问题(因为NSNumber或NSString是AnyObject),但在这里这样做似乎没有什么意义。在一般情况下,字典现在是
[AnyHashable:Any]
,您应该使用它作为catch-all类型;任何对象基本上都在慢慢地消失,但肯定会消失。

[String:Any]
而不是
[String:AnyObject]
,你会没事的

至于“发生了什么”:自动桥接消失(例如Int和NSNumber之间,或String和NSString之间)。因此,像
[“imageName”:“3setting”]
这样的文字词典被推断为
[String:String]
,并且不能在需要
[String:AnyObject]
的地方分配,因为字符串不是AnyObject。但是字符串肯定是Any,因为所有东西都是Any


您也可以通过将
[“number”:1作为NSNumber,“imageName”:“3set”作为NSString]
来解决这个问题(因为NSNumber或NSString是AnyObject),但在这里这样做似乎没有什么意义。在一般情况下,字典现在是
[AnyHashable:Any]
,您应该使用它作为catch-all类型;任何对象基本上都在慢慢地消失,但肯定会消失。

如果您的内部字典有静态键,那么您应该将它们建模为
struct
s。此外,如果外部字典的键永远只能是整数,那么将它们改为
Int
s–如果它们是连续的,那么最好使用数组。总的来说,您可能需要一个
[[SomeStruct]]
。如果您的内部字典有静态键,那么您应该将它们建模为
struct
s。此外,如果外部字典的键永远只能是整数,那么将它们改为
Int
s–如果它们是连续的,那么最好使用数组。总的来说,您可能需要一个
[[SomeStruct]]