我在swift中使用2D数组时遇到了大麻烦。 在Objective-c中,我可以使用如下的二维数组。
NSMutableArray *arrMain = [[NSMutableArray alloc] init];
NSMutableArray *arrSub = [[NSMutableArray alloc] init];
[arrMain addObject:arrSub];
[arrSub addObjects:@[@"1",@"2",@"3",@"4"]]
NSLog(@"arrayMain:%@",arrMain);
并显示arrSub中的所有对象。 但是,在swift中它什么也没显示。 我想这是因为参考类型。如何附加(或引用)第二个数组,如objective-c?
答案 0 :(得分:1)
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]]
小心!这真的不安全......你必须确切地知道,你在做什么
答案 1 :(得分:0)
在Objective-C中,NSArray,NSMutableArray都是引用类型。在Swift中,Array是值类型。您可以像这样创建2D数组:
var array1 = [[Int]]() // modus 1
array1.append([10])
var array2 = Array<Array<Int>>() // modus 2
我觉得方式1很清楚