簡體   English   中英

從字典中解析數據<String, Any>在斯威夫特

[英]Parsing Data Out of Dictionary<String, Any> in Swift

我正在嘗試從 Swift 中的 Dictionary<String, Any> 中提取數據。 當我運行 NSLog("\\(terminalDict)") 時,字典返回以下內容:

可選([“DFEE22”:<323c3c>,“DFEE20”:<3c>,“DFEE21”:<0a>,“DFEE17”:<07>,“DFEE1E”:,“DF10”:<656e6672 65737a68>,“ 9F1C”:<38373635 34333231>、“DFEE16”:<00>、“DFEE15”:<01>、“5F36”:<02>、“DF11”:<00>、“DFEE1F”:<80>、“DFEE18” ": <80>, "9F1A": <0840>, "9F35": <21>, "9F4E": <31303732 31205761 6c6b6572 2053742e 20437970 726573073 "2DF00000", 2DF0040000E:3005000 <30303031 35313030>, "DF26": <01>, "9F15": <1234>, "9F40": <f000f0a0 01>, "9F16": <30303030 30303030 303,030 "3030303030303030303" 9F1E": <5465726d 696e616c>])

我想將字典中的所有鍵和值取出並放入一個字符串變量 (newSettings) 中。 這就是我試圖這樣做的方式:

for (key, value) in terminalDict! {
    NSLog("key is now= \(key)")
    NSLog("value is now= \(value)")
    let asString = value as! String
    print(asString)
    NSLog("Adding \(key) \(asString)")
    newSettings = "\(newSettings)\(key)\(asString)"
  }

返回:

關鍵是現在= DFEE22
值現在= {長度= 3,字節= 0x323c3c}
無法將“NSConcreteMutableData”(0x204aff148)類型的值轉換為“NSString”(0x204afde30)。

如何將“323c3c”作為沒有長度和字節部分的簡單字符串從字典中取出? 我找不到關於“NSConcreteMutableData”類型的太多文檔。 我是否必須使用子字符串函數才能擺脫“length=x bytes=”部分? 我猜有比手動獲取子字符串更好的方法來做到這一點。 謝謝。

正如 Vadian 所說,您的字典包含Data值。

看起來像是 ASCII 編碼的文本,但有點難以確定。

這一點:

31303732 31205761 6c6b6572 2053742e 20437970 72657373 2c204341 202c5553 412e

表示字符串“10721 Walker St. Cypress, CA ,USA”。 當您將其視為 ASCII 時。

你可以使用這樣的代碼:

for (key, value) in terminalDict! {
    NSLog("key is now= \(key)")

    // Decode the data into a String assuming it's ASCII
    let asString = String(data: value, encoding: .ascii)

    NSLog("value is now= '\(asString)'")
    print(asString)
    NSLog("Adding \(key) \(asString)")
    newSettings = "\(newSettings)\(key)\(asString)"
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM