简体   繁体   English

如何快速将元素附加到二维数组中?

[英]how can I append element into two-dimensional array in swift?

I'm having a big trouble using 2D array in swift. 我在快速使用2D数组时遇到了很大的麻烦。 in Objective-c, I could use 2d array like below. 在Objective-c中,我可以使用如下所示的2d数组。

NSMutableArray *arrMain = [[NSMutableArray alloc] init];
NSMutableArray *arrSub = [[NSMutableArray alloc] init];

[arrMain addObject:arrSub];
[arrSub addObjects:@[@"1",@"2",@"3",@"4"]]
NSLog(@"arrayMain:%@",arrMain);

and it displayed all objects in arrSub. 并在arrSub中显示所有对象。 However, in swift it display nothing. 但是,它很快不显示任何内容。 I guess it is because of reference type. 我猜是因为引用类型。 How can I append(or refer) second array like objective-c? 我如何附加(或引用)第二个数组,如Objective-C?

var arr1 = [1,2,3]
var arr2 = [arr1]
print(arr2) // [[1, 2, 3]]
arr1.append(0)
print(arr1) // [1, 2, 3, 0]
arr2.append([5,6])
print(arr2) // [[1, 2, 3], [5, 6]]

withUnsafeMutablePointer(&arr2) { (parr2) -> Void in
    parr2.memory[0].append(4)
}

print(arr2) // [[1, 2, 3, 4], [5, 6]]

be careful! 小心! it is really unsafe ... you have to know exactly, what are you doing 这真的很不安全...您必须确切地知道,您在做什么

In Objective-C,NSArray、NSMutableArray both reference type.In Swift,Array is value type. 在Objective-C中,NSArray,NSMutableArray都是引用类型。在Swift中,Array是值类型。 You can creat 2D array like this: 您可以像这样创建2D数组:

var array1 = [[Int]]() // modus 1
array1.append([10])


var array2 = Array<Array<Int>>() // modus 2    

I think modus 1 is clear 我认为方式1很清楚

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM