2017-06-18 72 views
0

Swift新手。 Objective-C的NSMutableArray上有initWithArray的Swift等效函数吗?Swift4 initWithArray相当于

我在的OBJ-C下面的代码

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

,我试图用斯威夫特

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

你在找什么,我认为是为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) 

你可以找到这些方法(第二个是的init方法之一)在Xcode中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

+0

我需要使用字典类型,因为我dataArray中实际上是一个数组拿着字典对象。我如何去使用它? – user2511882

+0

好的,在这种情况下,您需要用您的字典类型替换'String',也许'[String:String]'?当然,我的示例数据在这种情况下将是错误的!上述代码的结构保持完全一样,方法('append','init')是通用的,可以处理任何元素类型的数组。 – CRD

+0

如果我尝试,那么我无法将整个tempArray追加到dataArray。 var tempArray = [[String:String]]() 我得到一个无法将[[String:String]]类型的值转换为[String:String] – user2511882