我最近从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
数组中?
谢谢。
答案 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