我在检查多维数组中的值时遇到问题。
我在一个数组中创建一个数组,里面有3个数组。
该数组称为profilerdata,变量“key”是一个字符串,因此它应该只是这些数组中的三个字符串。
我的日志中的数组作为SwiftDeferredNSArray,我认为这是我读过的第一个问题,这是一个非可变数组。
var newKeyArray = [[key],[String](),[""]]
for thing in dataArray as! [[String: AnyObject]] {
newKeyArray[1].append("0")
}
print(newKeyArray)
profilerData.append(newKeyArray as AnyObject)
然后尝试读取数组中的值,如下所示:
var n = 1
while n <= elementArray.count {
if profilerData[n][0] as! String == headertitle {
print("it matches")
} else {
print("it does not match")
}
n += 1
}
变量“headertitle”也是一个字符串,但是当它运行时我得到一个错误:
无法将'Swift._SwiftDeferredNSArray'(0x104ce8040)类型的值转换为'NSString'(0x101f97c60)。
此行发生此错误
if profilerData[n][0] as! String == headertitle {
任何帮助非常感谢,
P.S。请简单解释一下,因为我是Swift的新手。
答案 0 :(得分:1)
你的数组比你认为的更深一级。要查看此内容,请尝试使用此代码,以简化您正在执行的操作:
let key = "key"
let newKeyArray = [[key],[String](),[""]]
var profilerData = [Any]()
profilerData.append(newKeyArray)
let oneLevel = profilerData[0] as! Array<Array<String>>
let twoLevel = oneLevel[0] // Array<String>
let threeLevel = twoLevel[0] // String