2015-04-26 83 views
0

here不一樣的問題。Swift - 從premade sqlite文件填充核心數據

我有一個預製的sqlite文件,它有三列:chapter,verseNumber和verseText。我的核心數據實體的屬性名稱相同。如何從我的sqlite文件填充核心數據庫?

+0

你怎麼預建sqlite的文件?它是一個核心數據文件? –

+0

我正在使用[SQLiteBrowser](http://sqlitebrowser.org/)。它不是核心數據文件。我需要使它成爲一個核心數據文件。 – tazboy

+0

檢出FMDB項目。您可以使用它來解析和遍歷sqlite文件中的數據,然後將其保存到Core Data中http://stackoverflow.com/a/17268032/413570 – rodrigoalves

回答

0

這裏是我落得這樣做:

@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() 

} 
1

Core Data無法讀取任意SQLite文件。您將不得不手動將文件轉換爲Core Data數據庫。 Core Data用來從SQLite讀取/寫入的格式是專有的。

您必須直接使用SQLite讀取數據。我建議使用類似FMDB的東西來讀取數據。要將數據放入核心數據存儲區,您應遵循Efficiently Importing Data的指導原則。

+0

對。我怎麼做? – tazboy