2015-02-24 52 views
0

我正在嘗試執行以下操作,但似乎無法接受操作。也許我錯過了語言中的一些基本內容。swift:更改包含多個映射的數組中的字典值

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

最後一行拋出一個錯誤說'@lvalue $T8' is not identical to 'AnyObject!'是這樣的事情在迅速不允許?如果是的話,一個人如何實現這一目標。

回答

1

你只需要申報富權辦法。作爲一個字典陣列:

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

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

完美!做了我正在尋找的東西。 – tawheed 2015-02-24 05:12:47

+0

不用客氣 – 2015-02-24 05:13:30

+0

有關'String:AnyObject'的相關提示。與「NSMutableArray」相同嗎? @LeonardoSavioDabus – 2015-02-24 05:26:05

0

當您使用foo[0]解除引用時,返回類型爲AnyObjectAnyObject類型沒有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" 
相關問題