无法更新数组内的Dictionary中的值?

时间:2017-03-01 10:58:14

标签: swift

我最近从Objective-C迁移到了Swift,我遇到了以下示例的问题:

var test: [[String: AnyObject]] = [["value": true]]

var aaa: [String: AnyObject] = test[0]
print(aaa["value"])  // prints Optional(1)
aaa["value"] = false
print(aaa["value"])  // prints Optional(0)

var bbb: [String: AnyObject] = test[0]
print(bbb["value"])  // prints Optional(1) again???

为何更改未存储在test数组中?

谢谢。

2 个答案:

答案 0 :(得分:4)

Swift <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <SurfaceView android:id="@+id/surfaceView" android:layout_width="match_parent" android:layout_height="match_parent" /> <TextView android:textColor="@android:color/white" android:layout_width="wrap_content" android:layout_gravity="bottom |center_horizontal" android:text="SCAN AND PAY!" android:layout_height="wrap_content" /> </FrameLayout> 是值类型而不是引用类型,因此您需要在进行更改后将其设置为带有数组的字典。

Dictionary

您可以这样尝试:

var test: [[String: AnyObject]] = [["value": true]]

var aaa: [String: AnyObject] = test[0]
print(aaa["value"])  // prints Optional(1)
aaa["value"] = false
print(aaa["value"])  // prints Optional(0)

//Replace old dictionary with new one
test[0] = aaa    

var bbb: [String: AnyObject] = test[0]
print(bbb["value"])  // prints Optional(0) 

答案 1 :(得分:1)

直接从主阵列改变

test[0]["value"] = false