私は、SQLite.swiftを使用して、iOS10アプリケーションのデータベースに接続しています。.prepareと.selectの比較
IHE_IDが別のView Controllerから渡された特定の大学の詳細を選択したいとします。
私は、その特定の大学の行を選択したいだけですが、質問することはできません。しかし、準備をしてすべてのデータをループしてから、必要なものを選択することができます。送信用のビューコントローラからIHE Intとして渡された特定のIHE_IDを持っているので、必要以上にリソースを消費します。
接続が
do {
let db = try Connection(destinationDBPath, readonly: true)
let IHEs = Table("IHE")
let IHE_ID = Expression<Int>("IHE_ID")
let IHE_Name = Expression<String>("IHE_Name")
let IHE_COE_Url = Expression<String>("IHE_COE_URL")
let IHE_Sector = Expression<Int>("IHE_Sector")
let IHE_COE_Name = Expression<String>("IHE_COE_Name")
for ihe in try db.prepare(IHEs){
if (ihe[IHE_ID] == anIHE){
// build this string, otherwise ignore rest of dataset (doing this because query isn't working)
buildIHE = "Name: \(ihe[IHE_Name])\n"
buildIHE.append("URL: \(ihe[IHE_COE_Url])\n")
// buildIHE.append("Sector: \(ihe[IHE_Sector])\n")
if (ihe[IHE_Sector] == 0) {
buildIHE.append("Sector: Public\n")
} else {
buildIHE.append("Sector: Private\n")
}
buildIHE.append("College of Education Name: \(ihe[IHE_COE_Name])\n")
}
}
print ("Got through building IHE portion of view")
は、私は何をしたいのは、forループの代わりにこれを使用している...そのコードを省略ので働いています。
最後に、クエリが機能するようになったら、選択した要素を使用します。 私はおそらく、クエリ上で私の構文に何か間違っていると思うが、どんな助けにも感謝しています。
Xcodeで "if let query"の行にこのエラーがあります。 条件付きバインドの初期化子には、 'Table'ではなくOptional型が必要です。 これは、私が.selectステートメントを使用して、SQLite.swiftとswiftを一般的に使用したことで何かと思うようになります。
最後に、このコードに示すように、anIEがIntとしてこの関数に入り、IHE_IDがExpressionです。私はこれが問題の一部であるかもしれないと思っています。
ありがとうございます!私は今日これを試し、.pluck()を読んでください –
あなたは大歓迎です。しかし、SQLite.swiftよりも実験的ではない他のSQLiteライブラリがあります(https://github.com/groue/GRDB.swiftなど)。 –