在for循环中向swift数组添加多个对象

时间:2017-12-16 12:40:53

标签: arrays swift

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 在这里,我一次只能为数组添加一个值 如何在第二次循环时为该数组添加下一个值。

2 个答案:

答案 0 :(得分:1)

如前所述,您必须在进入循环之前声明数组。

您的代码非常 objectivecish 。这是 swiftier 版本。不要注释编译器可以推断和使用密钥订阅的类型,而不是丑陋地转换为AnyObjectobjectForKey:

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)
        }
    }