let returnedFromServer = ["Title" : ["abc","def","ghi"],"time" : ["1234","5678","0123"],"content":["qwerty","asdfg","zxcvb"]]
我想把它变成这样的东西:
let aftertransformation =[["Title" : "abc","time" : "1234","content": "qwerty"],["Title" : "def","time" : "5678","content": "asdfg"],["Title" : "ghi","time" : "0123","content": "zxcvb"]]
我目前的实施如下:
var outputArray = [[String : AnyObject]]()for i in 0..<(returnedFromServer["time"] as [String]).count { var singleDict = [String: AnyObject]() for attribute in returnedFromServer { singleDict[attribute] = returnedFromServer[attribute]?[i] } outputArray.append(singleDict)}
这工作正常,但我认为这不是一个非常优雅的解决方案.鉴于Swift有一些简洁的功能,如reduce,filter和map,我想知道如果没有明确地使用循环我是否可以做同样的工作.
谢谢你的帮助!
解决方法 使用想法和字典扩展extension Dictionary { init(_ pairs: [Element]) { self.init() for (k,v) in pairs { self[k] = v } } func map<OutKey: Hashable,OutValue>(transform: Element -> (OutKey,OutValue)) -> [OutKey: OutValue] { return Dictionary<OutKey,OutValue>(Swift.map(self,transform)) }}
从
> What’s the cleanest way of applying map() to a dictionary in Swift?,
你可以实现这个目标
let count = returnedFromServer["time"]!.countlet outputArray = (0 ..< count).map { IDx -> [String: AnyObject] in return returnedFromServer.map { (key,value) in return (key,value[IDx]) }}总结
以上是内存溢出为你收集整理的数组 – 在没有for循环的情况下在swift中从字典转换为数组全部内容,希望文章能够帮你解决数组 – 在没有for循环的情况下在swift中从字典转换为数组所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)