我正在尝试使用 SQLite 中的数据更新字符串数组。我尝试使用的数据称为gameGAMETABLEDATA
,它是一个字符串数组。我可以使用操作在 SQLite 中将字符串数组保存为gameGAMETABLEDATA
,当我println(gameGAMETABLEDATA)
时,它会返回:
[cricket3.png, cricket1.png, cricket1.png, cricket1.png, cricket1.png, cricket1.png, cricket1.png].
所以里面的值是一个字符串数组。但是,Xcode不会将SQLite中的此值标识为字符串数组,而是将其标识为字符串。我知道,因为当我尝试将GameViewController.tableData
更改为匹配gameGAMETABLEDATA[index]
时,会出现错误。
SavedGames.swift
var gameGAMETABLEDATA: [String] = []
//Error below!!! "Cannot assign a value of type 'String' to value of type [String]"
GameViewController.tableData = gameGAMETABLEDATA[index]
}
GameViewController.swift
var tableData: [String] = ["cricket1.png", "cricket1.png", "cricket1.png", "cricket1.png", "cricket1.png", "cricket1.png", "cricket1.png"]
发生了什么事?当我GameViewController.tableData = [gameGAMETABLEDATA[index]]
时,它不起作用。你能帮忙的话,我会很高兴。谢谢。
答案 0 :(得分:2)
SQLite支持有限数量的列类型,但是:
任何列仍然可以存储任何类型的数据。
- https://www.sqlite.org/datatype3.html
SQLite不支持数组列,但文本很丰富(BLOB更丰富)。您可以使用此丰富程序对几乎任何内容进行序列化和反序列化。
在您的情况下,看起来您关心的是您控制的字符串数组(引用您控制的文件)。假设您的文件名都共享其中没有字符,您可以使用这样的分隔符(例如,逗号)将它们连接成一个字符串,并序列化结果:
let files = ["cricket1.png", "cricket2.png" /* … */]
let text = files.joined(separator: ",")
// Save `text` to your database, as "cricket1.png,cricket2.png".
要从数据库反序列化,例如。在text
变量中:
let files = text.split(separator: ",")
// Use `files` as above.