質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

4404閲覧

Swiftで既存のデータベースの読み込みと保存

wint

総合スコア13

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2017/08/04 13:20

編集2017/08/04 13:21

iOSの単語帳アプリを開発しています。
もともとあるdbファイルのデータを使って単語を表示し、その成績なども同時に保存できるようにしたいと考えています。
データベース読み込みはGRDB.swift(https://github.com/groue/GRDB.swift)を使おうと考えています。

イメージ説明

GRDBSampleというプロジェクトを新たに作って、写真のようにdbファイルを設置して、Usageのように

swift

1// Simple database connection 2let dbQueue = try DatabaseQueue(path: "level1.db")

で読み込みをしようとしたところ、実行時に"unable to open database file"とエラーが出ました。
お聞きしたいのは、
0. dbをどこに置くのが良いか
0. どのようにパスを指定すれば良いのか
0. 呼び出したファイルは書き換えが可能か

という3点になります。
全て出なくていいので、特に1についてだけでも知りたいです。
また、同様なことをしているサンプルコードなどがございましたらご教示していただけますでしょうか。
以上宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

これでどうでしょうか?

swift

1if let dir = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first { 2 let path = (dir as NSString).appendingPathComponent("level1.db") 3 print(path) 4 //=> /var/mobile/Containers/Data/Application/(略)/Documents/level1.db 5}

appendingPathComponent()を使うためにNSStringにキャストしていますが、気持ち悪ければ、

swift

1if let dir2 = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first { 2 let path = dir2.appending("/level1.db") 3 print(path) 4 //=> /var/mobile/Containers/Data/Application/(略)/Documents/level1.db 5}

と、単純にappendしてもいいと思います。

投稿2017/08/07 00:17

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wint

2017/08/09 16:28

ありがとうございます。 得られたパス(Document)にファイルをコピーしたところ読み込むことができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問