2014-10-30 2 views
0

Я планирую обновить старое приложение, которое в настоящее время использует базу данных SQLITE.iOS Простой запрос SQLite Select в Swift

Мое новое приложение написано на iOS8/Swift.

Есть ли простой способ запустить инструкцию select в файле базы данных SQLite и выполнить итерацию результатов? Выполняя это, я передам информацию в новую базу данных Core Data.

например: select id, someDate, someString, someInt from myTable;

После того, как я выполнил этот оператор select, я никогда больше ничего не сделаю с SQLite, поэтому я не хочу добавлять в приложение ничего существенного. Просто очень быстрый выбор для сбора данных о посеве.

Надеюсь, что это имеет смысл. Я просто смущен, когда пытаюсь сделать это в Свифт.

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

Я пойду с SQLite.swift. Легко настраивается и работает.

Следующее работает, но правильно ли я проверяю, не являются ли значения NIL? Это лучший способ проверить?

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._ , 'if let myID = row [0] как Int? {/ * ... * /} '. (Кроме того, второй должен быть 'row [1]'.) – stephencelis

+0

Спасибо, имеет смысл. [2] была ошибкой копирования. Обновлено. – Richard

ответ

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

Отлично работает. Спасибо. Я обновил свой первоначальный вопрос, чтобы уточнить, как наилучшим образом проверить, являются ли значения Nil. – Richard

+0

Ответил. По умолчанию во время компиляции невозможно гарантировать, что значение столбца никогда не будет «NULL», поэтому варианты - это путь, и ваше решение использовать 'if'-'let' является стандартом. – stephencelis

0

FMDB удивительная библиотека третья сторона, которая взаимодействует с sqlite.

Подробное swiftFMDB учебник можно найти here

Смежные вопросы