我正在尝试将Objective-C示例转换为Swift 2,但我遇到了一个小问题。最初的Objective-C片段:
NSMutableArray *inputsOutputs = [NSMutableArray array];
...
[inputsOutputs addObject:@{@"input" : input, @"output" : trackOutput}];
我认为Swift代码应该是:
var inputsOutputs = [Any?]()
...
inputsOutputs.append([ "input": input, "output": trackOutput ])
产生的错误是:
Contextual type 'AnyObject' cannot be used with dictionary literal?
如何将这种情况下的Objective-C转换为Swift?
答案 0 :(得分:36)
您可以看到数组的内容是带有String
个键和未知值的字典。
因此声明数组更具体
var inputsOutputs = [[String:AnyObject]]()
在Swift 3中,对于JSON集合类型,或者如果字典/数组仅包含值类型,请使用
var inputsOutputs = [[String:Any]]()
答案 1 :(得分:4)
应该没问题,至少在Swift 2+中是这样。我刚刚在操场上尝试了以下内容:
var objects = [Any?]()
let dict = [ "one" : 1, "two" : 2 ]
objects.append(dict) // prints [{["one": 1, "two": 2]}]
objects.append([ "one" : 1, "two" : 2 ]) // prints [{["one": 1, "two": 2]}, {["one": 1, "two": 2]}]