2017-02-01 4 views
0

Как удалить печать или данные Необязательно()? (Swift3, Xcode 8.2.1)удалить в печати или данные Необязательно() с SQLite.swift

let statement = try connection.prepare("SELECT * FROM persons") 
    for data in statement 
    { 
     print(data) 

    } 

// результат печати:

[Дополнительно (1), Дополнительный ("Джон"), опционный ("Do"), опционный ("Pologne") ]

спасибо каждое тело

+0

У меня нет времени для полного ответа, но позвольте мне ссылку на пост в блоге щедрого Оле Бегеманн: это все о «факультативных (...)» в выходы: https://oleb.net/blog/2016/12/optionals-string-interpolation/. О, и знаете тип вашей переменной 'data'. Я думаю, что это '[Any?]', Но вы должны убедиться в этом и понять, что это значит. –

+0

Боковое примечание: извините, вам пришлось покинуть GRDB.swift. GRDB проще для людей, которые пишут SQL, как вы. SQLite.swift не очень легко обрабатывает результаты необработанных SQL-запросов (как вы можете видеть). –

+0

С помощью GRDB 'print (row)' prints ''. Намного легче читать. И чтобы извлечь первое имя, вы пишете 'let firstName: String = row.value (" firstName ")'. С SQLite.swift я даже не знаю, как вы получите первое имя (это не [задокументировано] (https://github.com/stephencelis/SQLite.swift/blob/master/Documentation/Index.md#executing- произвольный-sql), или, точнее, документация дает понять, что это будет болезненно). –

ответ

0

Если вы хотите, чтобы пройти через дополнительные элементы в коллекции, вы можете использовать for case ... in петли, вариации петли for ... in. Это позволяет при необходимости связывать каждый элемент, переданный как необязательный, в область цикла, при условии, что элемент не равен nil.

Например:

let statement: [Any?] = [1, "John", "Doe", "Pologne"] 

for case let data? in statement { 
    print(data) 
} /* 1 
     John 
     Doe 
     Pologne */ 
+0

спасибо, но я только что протестировал, и у меня есть ошибка компиляции. – yave

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