将Dictionary转换为两个Arrays

时间:2016-03-17 03:00:03

标签: ios swift nsarray nsdictionary

我将数据字典从iPhone传递给WatchKitExtension。将接收到的Dictionary转换为两个不同的item数组的最佳方法是什么?

iPhone Data

let applicationDict = [“Item1” : data.item1, “Item2” : data.item2]
let transfer = WCSession.defaultSession().transferUserInfo(applicationDict)

观看ExtensionDelegate

var incomingData = Array<Dictionary<String, String>>()

func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {
        if let item1Value = userInfo[“Item1”] as? String, let item2Value = userInfo[“Item2”] as? String {
            incomingData.append([“Item1” : item1Value , “Item2” : item2Value])
            // use incomingData to make two item arrays
        } 
}

我已经看过其他一些看似相似的问题了,看起来像是componentArray = Array(incomingData.values)的问题,但是我无法让它发挥作用。

实施例

Item1是城市。 Item2是州。因此Item1数组为["Chicago", "San Francisco"]Item2数组为["Illinois", "California"]

1 个答案:

答案 0 :(得分:2)

incomingData是一系列词典。我不相信这是你真正想要的。如果您在每次转帐时都通过了城市/州对,那么这应该适用于ExtensionDelegate

var cities = [String]()
var states = [String]()

func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {
    if let item1Value = userInfo["Item1"] as? String, let item2Value = userInfo["Item2"] as? String {
        cities.append(item1Value)
        states.append(item2Value)
    }
}