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

问题描述 投票:1回答:2
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。 在这里,我一次只能向数组添加一个值。 如何在第二次循环时为该数组添加下一个值。

arrays swift
2个回答
0
投票

你需要在你的tempNoArray循环之外移动for in初始化,如果不是你的数组将被初始化一次为你的exportDataArray中的每个项目仅保留las项目作为结果

你需要这样的东西

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

1
投票

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

你的代码非常客观。这是一个更加迅速的版本。不要注释编译器可以推断和使用键订阅的类型,而不是丑陋的转换为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 }
© www.soinside.com 2019 - 2024. All rights reserved.