for tempExportData in exportDataArray {
let tmpRegNO:NSString = (tempExportData as AnyObject).object(forKey: kRegisteredNo) as! NSString
print("tmpRegNO is",tmpRegNO)
var tmpNoArray:Array = [String]()
tmpNoArray.append(tmpRegNO as String)
print("Count is",tmpNoArray.count)
print("ARRAY is",tmpNoArray)
}
我正在尝试将字符串值tmpRegNO
添加到数组tmpNoArray
在这里,我一次只能为数组添加一个值
如何在第二次循环时为该数组添加下一个值。
答案 0 :(得分:1)
如前所述,您必须在进入循环之前声明数组。
您的代码非常 objectivecish 。这是 swiftier 版本。不要注释编译器可以推断和使用密钥订阅的类型,而不是丑陋地转换为AnyObject
和objectForKey:
。
var tmpNoArray = [String]()
for tempExportData in exportDataArray {
let tmpRegNO = tempExportData[kRegisteredNo] as! String
print("tmpRegNO is",tmpRegNO)
tmpNoArray.append(tmpRegNO)
print("Count is",tmpNoArray.count)
print("ARRAY is",tmpNoArray)
}
您甚至可以将整个表达式写在一行中:
let tmpNoArray = exportDataArray.flatMap { $0[kRegisteredNo] as? String }
答案 1 :(得分:0)
您需要在tempNoArray
循环之外移动for in
初始化,否则您的数组将初始化一次,因为exportDataArray
中的每个项目仅保留las项目作为结果< / p>
你需要像这个
这样的东西var tmpNoArray:Array = [String]()
for tempExportData in exportDataArray{
if let tmpRegNO = tempExportData[kRegisteredNo] as? String
{
print("tmpRegNO is",tmpRegNO)
tmpNoArray.append(tmpRegNO as String)
print("Count is",tmpNoArray.count)
print("ARRAY is",tmpNoArray)
}
}