我正在嘗試執行以下操作,但似乎無法接受操作。也許我錯過了語言中的一些基本內容。swift:更改包含多個映射的數組中的字典值
var foo:NSArray = []
var bar = ["name":"jake"]
foo = [bar]
foo[0]["name"] = "Fred"
最後一行拋出一個錯誤說'@lvalue $T8' is not identical to 'AnyObject!'
是這樣的事情在迅速不允許?如果是的話,一個人如何實現這一目標。
我正在嘗試執行以下操作,但似乎無法接受操作。也許我錯過了語言中的一些基本內容。swift:更改包含多個映射的數組中的字典值
var foo:NSArray = []
var bar = ["name":"jake"]
foo = [bar]
foo[0]["name"] = "Fred"
最後一行拋出一個錯誤說'@lvalue $T8' is not identical to 'AnyObject!'
是這樣的事情在迅速不允許?如果是的話,一個人如何實現這一目標。
你只需要申報富權辦法。作爲一個字典陣列:
var foo:[[String:AnyObject]] = []
var bar = ["name":"jake"]
foo = [bar]
foo[0]["name"] = "Fred"
foo // [["name": "Fred"]]
當您使用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"
完美!做了我正在尋找的東西。 – tawheed 2015-02-24 05:12:47
不用客氣 – 2015-02-24 05:13:30
有關'String:AnyObject'的相關提示。與「NSMutableArray」相同嗎? @LeonardoSavioDabus – 2015-02-24 05:26:05