1

これは私の最初の迅速なプロジェクトです。私はまだ構文/言語に追いついていません。

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 番目の質問です。ここでスタックオーバーフローでトランザクションに関するものを見つけました。「リターン」を行うときに、トランザクションは自動的にコミットまたはロールバックされます

4

1 に答える 1