2017-05-09 72 views
0

examplesqlite.swift,如何通過名稱給出字段值?

for user in try db.prepare(users.select(id, email)) { 
    print("id: (user[id]), email: (user[email])") 
    // id: 1, email: [email protected] 
} 
    // SELECT "id", "email" FROM "users" 

,但我想知道是否有可能使用的名字,但表達或索引?

我的意思:

設ID =用戶[ 「電子郵件」],然後拿到了場 '電子郵件'

它似乎不支持的價值?

+0

我修改代碼支持的方式...... – iXcoder

回答

0

不,SQLite.swift不支持按名稱訪問行列。

另一種方法是GRDB.swift,它可以讓你通過列名訪問列中的值,如果你想:

// Using raw SQL: 
let rows = Row.fetchCursor(db, "SELECT * FROM users") 
while let row = rows.next() { 
    let id: Int64 = row.value(named: "id") 
    let email: String = row.value(named: "email") 
} 

// Using a "query interface request", and raw row access: 
let request = User.all() 
let rows = Row.fetchCursor(db, request) 
while let row = rows.next() { 
    let id: Int64 = row.value(named: "id") 
    let email: String = row.value(named: "email") 
} 

// Using a natural "query interface request": 
let users = User.fetchAll(db) // [User] 
+0

我對您的評論欣賞,我有修改代碼支持的方式.. – iXcoder

+0

但不知道如果是正確的選擇繼續使用swift.sqlite^0^ 也許GRDB更好,我只是想它簡單,swift.sqlite是偉大的,只是一點點混淆訪問價值,這使用綁定,這是不容易延伸,似乎不是很靈活......我必須更新代碼,以滿足我的想法,然後它的工作原理,將盡快在git上發佈代碼。 – iXcoder

相關問題