[英]Swift - Replace a value in a nested struct
我需要變異深度未知的嵌套字典。
我意識到當我實際上需要引用類型(“ NSMutable”)時,swift中的結構就是值類型
但是我注意到,如果使用dot(。)語法訪問嵌套結構,則可以直接更新值,而無需重新分配給原始的“父級”。
例如,對於嵌套數組:
var l1 = ["a0","b0"]
var l2 = ["a1","b1"]
var list = [l1,l2]
print(list)
>>[["a0", "b0"], ["a1", "b1"]]
// I can mutate the nested structs by using dot(.) syntax
// mutate the zero indexed nested array:
list[0].insert("x0", atIndex: 0)
print(list)
>> [["x0", "a0", "b0"], ["a1", "b1"]]
// try to mutate after assignment - Not able to
var l1Ref = list[0]
print(l1Ref)
>> ["x0", "a0", "b0"]
l1Ref.removeFirst()
print(l1Ref)
>> ["a0", "b0"]
print(list)
// still the same as was before
>> [["x0", "a0", "b0"], ["a1", "b1"]]
如何在不使用點語法的情況下迭代更改嵌套結構?
數組是Swift中的結構,當您將子數組分配給變量時,會得到該子數組的副本。 要獲得對子數組的引用,請將數組的類型定義為NSMutableArrays的數組:
var array: [NSMutableArray] = [["a", "b", "c"]]
var subArray = array[0]
subArray.removeObjectAtIndex(1)
print(array, subArray)
>> [(a, c)] [(a, c)]
您可以在此處閱讀有關Swift中數組的更多信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.