2016-03-17 79 views
1

我將iPhone數據字典傳遞給WatchKitExtension。將收到的字典轉換爲兩個不同的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"]

+0

你能解釋一下2個數組數組的含義嗎?你似乎再次從一系列字典中製作一系列字典。 – Karthik

+0

@Karthik當然。我想爲傳遞給我的每個具有「Item1」和每個傳遞給我的具有「Item2」的密鑰的數組創建一個數組。是的,我不能做正確的事情試圖做到這一點,所以很抱歉,如果這是令人困惑。任何更多的問題只是讓我知道,所以我可以確保我清楚我要去什麼,即使我還沒有到達那裏 – victorpulak

+0

@Karthik我加了一個我正在談論的東西的例子更清楚地希望 – victorpulak

回答

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) 
    } 
} 
+0

所以我做了'let values1 = Array(incomingData [0] .values)',但是然後'value1'最終成爲來自'incomingData'的所有0個索引項的數組。例如,根據我的例子,我在我的問題中加入了:我希望'values1'爲'[「芝加哥」,「舊金山」,「不」,「芝加哥」,「伊利諾伊」]。並且'values2'是'[「Illinois」,「California」]''''「舊金山」,「加利福尼亞」]。有道理? – victorpulak

+0

iPhone端的'data.item1'和'data.item2'是否已經有字符串數組? –

+0

在iPhone端,我運行了一個for循環,其中包含「let data in results!」,然後通過data.item1 = data [「Item1」]循環遍歷'item1'! String'。那有意義嗎? – victorpulak