Swift数组到字符串

Wil*_* Hu -2 arrays ios swift

有一个类似的数组:

 let datas =
    [["#A1CCE4","", "+0.0%", "+0.0%"],
     ["#4C3C2F","G", "+1.0%", "+0.2%"],
     ["#4C3C2F","G", "+3.1%", "+0.6%"],
     ["#C07155","S", "+0.3%", "+0.1%"],
     ["#C07155","G", "+2.0%", "+0.4%"],
     ["#C07155","P", "+1.8%", "+0.3%"],
     ["#AEB0B3","R", "+2.0%", "+2.0%"]]
Run Code Online (Sandbox Code Playgroud)

如何将其转换为字符串,例如:

"""let data = [["#A1CCE4", "", "+0.0%", "+0.0%"], ["#4C3C2F", "G", "+1.0%", "+0.2%"], ["#4C3C2F", "G", "+3.1%", "+0.6%"], ["#C07155", "S", "+0.3%", "+0.1%"], ["#C07155", "G", "+2.0%", "+0.4%"], ["#C07155", "P", "+1.8%", "+0.3%"], ["#AEB0B3", "R", "+2.0%", "+2.0%"]]"""
Run Code Online (Sandbox Code Playgroud)

(带有“ let data =”是否可以)

在此处输入图片说明

编辑

"\(datas)" 应该是答案。

要么

"\(String(describing: datas))"
Run Code Online (Sandbox Code Playgroud)

要么

datas.description
Run Code Online (Sandbox Code Playgroud)

我为什么要问这个问题?

  1. 数组实际上来自plist,而数字值来自不同的地方。
  2. 这些数字值需要在中的js代码中加载WKWebView。而且,js代码只是字符串。
  3. 在我的js代码中,我实际上具有相同的代码datas变量代码。

vad*_*ian 5

您实际上想要创建一个JSON字符串,这很容易,JSONEncoder因为默认情况下[String]符合Encodable

let datas =
    [["#A1CCE4","", "+0.0%", "+0.0%"],
     ["#4C3C2F","G", "+1.0%", "+0.2%"],
     ["#4C3C2F","G", "+3.1%", "+0.6%"],
     ["#C07155","S", "+0.3%", "+0.1%"],
     ["#C07155","G", "+2.0%", "+0.4%"],
     ["#C07155","P", "+1.8%", "+0.3%"],
     ["#AEB0B3","R", "+2.0%", "+2.0%"]]

do {
    let jsonData = try JSONEncoder().encode(datas)
    let result = String(data: jsonData, encoding: .utf8)!
    print(result)
} catch { print(error) }
Run Code Online (Sandbox Code Playgroud)

它比仅调用.description数组更可靠。
而且只有数组文字可以与JSON直接互换,而字典则不能。

如果您真的需要let datas =前缀,只需连接字符串

let resultWithPrefix = "let datas = " + result
Run Code Online (Sandbox Code Playgroud)

  • @TheTiger本身并不需要,但是它是更可靠的解决方案。如果需求发生变化,并且添加了词典,那么“ description”将会中断。 (2认同)