在Swift中创建一个字典,其值为字符串数组

3

在 Swift 中创建一个包含字符串数组的字典,代码如下:

lazy var info : Dictionary = {

    var dictionary = [String: [String]]()
    dictionary["Key1"] = ["A", "B", "C"]
    dictionary["Key2"] = ["D", "E", "F"]

    return dictionary  
}()

无法将类型为“Value?”的不可变表达式分配给

这里有什么问题吗?


通常在使用 let 声明字典时会出现这个错误消息。但你在这段片段中使用了正确的方式。你确定在真实代码中也是这样吗? - mad_manny
1
问题在于你不能在懒加载变量中使用Dictionary - 必须将Dictionary更改为NSDictionary,然后一切都正常了。 - XCode Warrier
2个回答

6

我看到了你的答案,虽然可行,但有更好的方法:使用Swift字典并声明其正确的类型,在你的情况下为[String: [String]]

lazy var info : [String: [String]] = {

    var dictionary = [String: [String]]()
    dictionary["Key1"] = ["A", "B", "C"]
    dictionary["Key2"] = ["D", "E", "F"]

    return dictionary
}()

刚想评论这个。@XCodeWarrier最好将所有类型声明与初始值分开 var dictionary : [String: [String]] = [:] - R Menke
2
完美的答案!让我们继续使用Swift而不是回到旧的Objective-C类(如NSDictionary)。 - Luca Angeletti

0

更改

lazy var info : Dictionary = {

    var dictionary = [String: [String]]()
    dictionary["Key1"] = ["A", "B", "C"]
    dictionary["Key2"] = ["D", "E", "F"]

    return dictionary  
}()

lazy var info : NSDictionary = {

    var dictionary = [String: [String]]()
    dictionary["Key1"] = ["A", "B", "C"]
    dictionary["Key2"] = ["D", "E", "F"]

    return dictionary  
}()

一切都很好 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接