用Swift中的SQLite替换字符串数组

时间:2015-05-13 01:00:48

标签: ios iphone swift

我正在尝试使用 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]]时,它不起作用。你能帮忙的话,我会很高兴。谢谢。

1 个答案:

答案 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.