我有一个 NSArray
,其中包含在 Objective-C 中创建的 NSArrays
字符串。
我现在想在 swift 类中循环遍历数组中的项目,但在语法上遇到了问题。
原始的 Objective-C 数组数组如下所示:
NSArray* shapes =@[@[@"square",@"square.png"],@[@"circle",@"circle.png"],@[@"square",@"square.png"]];
我可以使用以下方法从 Objective-C 类获取并打印数组:
let shapes:Array = Utilities.sharedInstance().getShapes
但是,以下循环数组的内容未编译:
var term : String = ""
var pic : String = ""
for shape in shapes {
term = shape[1] //ERROR HERE
pic = shape[2] //SAME ERROR HERE
}
它给出错误:类型“Any”没有下标成员
循环元素的正确语法是什么?
最佳答案
你可以试试
let shapes = Utilities.sharedInstance().getShapes as! [[String]]
您的 Array
元素的类型为 Any
,因此在强制转换之前,您不能将 [] 与它们一起使用,当您使用目标中的桥接代码时,情况总是如此 - c,所以你必须具体说明你使用的实际类型,我也鼓励
struct Item {
let term,pic:String
}
然后
let res:[Item] = shapes.map { Item(term:$0[0],pic:$0[1]) }
一条无关紧要的注释,但你可以做的很重要
NSArray* shapes = @[@"square",@"circle",@"square"];
那么附加 .png 的问题就很简单了,而不是直接使用 [[String]]
,它是 [String]
关于ios - 在 Swift 中转换语法以循环遍历数组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53805880/