【问题标题】:Swift - Populate core data from premade sqlite fileSwift - 从预制的 sqlite 文件中填充核心数据
【发布时间】:2015-07-04 16:31:50
【问题描述】:

here的问题不同。

我有一个预制的 sqlite 文件,它包含三列:chapter、verseNumber 和 verseText。我的核心数据实体的属性具有相同的名称。如何从我的 sqlite 文件填充核心数据数据库?

【问题讨论】:

  • 你是如何预构建 sqlite 文件的?它是核心数据文件吗?
  • 我正在使用SQLiteBrowser。它不是核心数据文件。我需要把它变成一个核心数据文件。
  • 检查 FMDB 项目。您可以使用它来解析和遍历 sqlite 文件中的数据,然后将其持久化到 Core Data stackoverflow.com/a/17268032/413570
  • @rodrigoalves 然后我可以删除 sqlite 文件并只使用核心数据文件吗?

标签: swift core-data


【解决方案1】:

Core Data 无法读取任意 SQLite 文件。您必须手动将文件转换为 Core Data 数据库。 Core Data 用于读取/写入 SQLite 的格式是专有的。

您必须直接使用 SQLite 来读取数据。我建议使用FMDB 之类的东西来读取数据。要将数据放入 Core Data 存储,您应该遵循Efficiently Importing Data 的指导方针。

【讨论】:

  • 对。我该怎么做?
【解决方案2】:

这是我最终做的:

@IBAction func getSQLDB (sender: NSButton) {

    let documentsFolder = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
    let path = documentsFolder.stringByAppendingPathComponent("kjv.db")

    println(documentsFolder)

    let database = FMDatabase(path: path)

    if !database.open() {
        println("Unable to open database")
        return
    }

    //if let rs = database.executeQuery("SELECT * FROM bible WHERE (book = 'Gen') AND (chapter = '1')", withArgumentsInArray: nil) {
    if let rs = database.executeQuery("SELECT * FROM bible WHERE (book = 'Genesis') OR (book = 'Exodus')", withArgumentsInArray: nil) {
        while rs.next() {
            let content = rs.stringForColumn("content")
            let verseNumber: Int! = rs.stringForColumn("verse").toInt()
            let chapter: Int! = rs.stringForColumn("chapter").toInt()
            let name = rs.stringForColumn("book")
            // Loops through all the information from the query and creates a book
            makeBook(name, content: content, chapter: chapter, verseNumber: verseNumber)
        }
    } else {
        println("select failed: \(database.lastErrorMessage())")
    }

    database.close()

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 2011-12-17
    • 1970-01-01
    • 2011-04-27
    • 2011-10-22
    相关资源
    最近更新 更多