首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift4 initWithArray等价

Swift4 initWithArray等价
EN

Stack Overflow用户
提问于 2017-06-18 17:03:51
回答 1查看 751关注 0票数 0

斯威夫特的新手。目标C中的initWithArrayNSMutableArray上有一个Swift等价函数吗?

我在Obj中有以下代码

代码语言:javascript
复制
 tempArray = [[NSMutableArray alloc] initWithArray:dataArray];

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

代码语言:javascript
复制
var tempArray = [[[String:String]]]()
var dataArray: [[String: String]]
tempArray.append(dataArray)

问题是,tempArray的计数为1(这在逻辑上似乎是正确的)。我要做的就是将dataArray添加到tempArray中,它是一个保存字典对象的数组。如果可能的话,我想使用本机Swift数组。

编辑:在按建议进行更改后,我将得到以下错误:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-18 23:00:09

我认为你要找的是append(contentsOf:)。您还使用字典类型(String:String)而不是数组类型。尝试以下几点:

代码语言:javascript
复制
var tempArray = [String]()
let dataArray: [String] = ["An", "array", "of", "String"] // just an example
tempArray.append(contentsOf: dataArray)

更接近你的目标-C可能是:

代码语言:javascript
复制
let dataArray: [String] = ["An", "array", "of", "String"]
var tempArray = [String](dataArray)

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

增编

根据注释,您有一个字典数组,只需将元素类型从String更改为[String:String],所使用的所有方法都是泛型的(独立于元素类型)。在这个示例中,我还必须按文字测试数据进行更改:

代码语言:javascript
复制
var tempArray = [[String:String]]()
let dataArray: [[String:String]] = [["a" : "A", "b" : "dict"], ["a" : "another", "b" : "dict"]]
tempArray.append(contentsOf: dataArray)

HTH

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44617462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档