swift:更改包含多个贴图的数组中的字典值

时间:2015-02-24 04:17:06

标签: ios swift

我正在尝试执行以下操作,但似乎是不可接受的操作。也许我遗漏了一些基本的语言。

var foo:NSArray = []
var bar = ["name":"jake"]
foo = [bar]
foo[0]["name"] = "Fred"

最后一行抛出错误说'@lvalue $T8' is not identical to 'AnyObject!' swift中不允许这种事情吗?如果是这样,那么如何实现这一目标。

2 个答案:

答案 0 :(得分:1)

你必须以正确的方式宣布foo。作为字典数组:

var foo:[[String:AnyObject]] = []
var bar = ["name":"jake"]
foo = [bar]
foo[0]["name"] = "Fred"

foo   // [["name": "Fred"]]

答案 1 :(得分:0)

当您使用foo[0]取消引用时,返回类型为AnyObject。类型AnyObject没有subscript运算符。使用

(foo[0] as! [String:String])["name"]

或者,如果您的数组只包含字典,则使用以下命令定义:

var foo : [[String:String]] = []

以下是一个例子:

$ swift
Welcome to Swift version 1.2. Type :help for assistance.
  1> var foo : [[String:String]] = [] 
foo: [[String : String]] = 0 values
  2> var bar : [String:String] = ["name":"jake"] 
  3.  
bar: [String : String] = {
  [0] = {
    key = "name"
    value = "jake"
  }
}
  3> foo = [bar] 
  4> foo[0]["name"] 
$R0: String? = "jake"