检查多维数组中的值是否等于字符串swift

时间:2017-08-30 21:59:33

标签: arrays swift multidimensional-array

我在检查多维数组中的值时遇到问题。

我在一个数组中创建一个数组,里面有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的新手。

1 个答案:

答案 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