これは私の最初の迅速なプロジェクトです。私はまだ構文/言語に追いついていません。
AlamoFire を使用して Web サービスからデータを取得し、SwiftyJson を使用して解析します。次に、SQLite.swift を使用してローカルの SQLite データベースに挿入します。
これまでのところ、AlomoFire、SwiftyJson、および SQLite.swift がインストールされ、私のプロジェクトで動作しています。驚いたことに、物事は非常にスムーズに進みました ;)
今私の質問。私が得たデータは配列の JSON にあるので、これを行いたいです:
let companiesTable = db["companies"] // get the table from our SQLite Database
db.transaction(.Deferred) { txn in
for (index,company) in data {
if companiesTable.insert(name <- company["name"]!), shortname <- company["short_name"]).statement.failed {
return .Rollback
}
}
return .Commit
}
私の問題はインサートにあります。! を使用してアンラップを強制する必要があります。これは、名前 (データベースの必須列) には問題ありませんが、空/null の可能性があるショートネームや他の多数の列 (簡単にするために上記の例では言及されていません) には問題ありません。もちろん、値を持つ列のみを挿入する必要があります。
2 番目の質問です。ここでスタックオーバーフローでトランザクションに関するものを見つけました。「リターン」を行うときに、トランザクションは自動的にコミットまたはロールバックされます