Swift4 initWithArray等效

时间:2017-06-18 17:03:51

标签: arrays swift nsmutablearray

Swift的新手。 Objective-C中initWithArray上的NSMutableArray是否有Swift等效函数?

我在Obj-C中有以下代码

 tempArray = [[NSMutableArray alloc] initWithArray:dataArray];

我试图在Swift中使用以下内容

var tempArray = [[[String:String]]]()
var dataArray: [[String: String]]
tempArray.append(dataArray)

问题是tempArray的计数为1(逻辑上似乎正确)。我想要做的就是添加dataArray,它是一个包含字典对象的数组到tempArray。如果可能,我想使用原生的Swift数组。

编辑: 按照建议进行更改后,我收到以下错误:

Cannot convert value of type [[String:String]] to expected argument type[String:String]

var tempArray = [[String:String]]()

    var dataArray: [[String: String]] =

        [["name": "John", "Address": "XYZ"],
         ["name": "Doe",  "Address": "ABC"]]

tempArray.append(dataArray)

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的是append(contentsOf:)。您还使用字典类型(String:String)而不是数组类型。请尝试以下方法:

var tempArray = [String]()
let dataArray: [String] = ["An", "array", "of", "String"] // just an example
tempArray.append(contentsOf: dataArray)

更接近您的Objective-C可能是:

let dataArray: [String] = ["An", "array", "of", "String"]
var tempArray = [String](dataArray)

您可以在Xcode的init文档页面上找到这些方法(第二种是Array方法之一)。

<强>附录

根据评论,您有一个字典数组,只需将元素类型从String更改为[String:String],所有使用的方法都是通用的(与元素类型无关)。在示例中,我还必须通过文字测试数据进行更改:

var tempArray = [[String:String]]()
let dataArray: [[String:String]] = [["a" : "A", "b" : "dict"], ["a" : "another", "b" : "dict"]]
tempArray.append(contentsOf: dataArray)

HTH