【发布时间】:2015-02-22 12:25:11
【问题描述】:
我有一些从服务器返回的数据如下所示:
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,我想知道我是否可以在不显式使用循环的情况下完成相同的工作.
感谢您的帮助!
【问题讨论】:
标签: arrays swift dictionary functional-programming reduce