2014-10-30 61 views
0

我打算更新當前正在使用SQLITE數據庫的舊應用程序。iOS簡單SQLite在Swift中選擇語句

我的新應用程序是用iOS8/Swift編寫的。

是否有一種簡單的方法在SQLite數據庫文件上運行select語句並遍歷結果?在做這件事時,我會將這些信息轉移到新的Core Data數據庫中。

例如:從myTable中選擇id,someDate,someString,someInt;

當我執行了這個select語句之後,我將永遠不會用SQLite做其他任何事情,所以我不會在應用程序中添加任何重要的東西。只需非常快速地選擇以獲取播種數據。

希望這是有道理的。在Swift中嘗試這樣做時我感到困惑。

====== UPDATE ======

我跟SQLite.swift去。易於安裝並運行。

以下是工作,但我正確地檢查,如果值不是零?這是檢查的最佳方法嗎?

let stmt = db.prepare("SELECT anID, aString FROM someTable") 
for row in stmt { 

    if var myID:Int = row[0] as Int? { // do something here if exists } 
    if var myString:String = row[1] as String? { // do something here if exists } 

} 
+0

您可以通過一次聲明類型簡化一點,我相信你的意思是使用'let'解開,_e.g._ ,'如果讓myID = row [0]爲Int? {/ * ... * /}'。 (另外,第二個應該是'row [1]'。) – stephencelis 2014-10-31 06:49:17

+0

謝謝,有道理。 [2]是一個複製粘貼錯誤。更新。 – Richard 2014-10-31 07:12:44

回答

2

總是有FMDB,但它肯定住在Objective-C的青睞。我寫了SQLite.swift以更好地使用Swift編程語言。

你上面的例子將最簡單的是這樣的:

let stmt = db.prepare("SELECT id, someDate, someString, someInt FROM myTable") 
for row in stmt { 
    // [Optional(1), Optional("2014-10-30"), Optional("Hello!"), Optional(5)] 
} 
+0

工程很好。謝謝。我已經更新了我的原始問題,以便進一步說明檢查值是否爲零的最佳方法。 – Richard 2014-10-31 06:24:59

+0

已回覆。默認情況下,在編譯時沒有辦法保證列值永遠不會是'NULL',所以選項是要走的路,你決定使用'if'''''是標準。 – stephencelis 2014-10-31 06:51:40

0

FMDB是一個了不起的第三方庫與sqlite接口。

詳細swiftFMDB教程可以發現here