読者です 読者をやめる 読者になる 読者になる

エンジニアリングにはほど遠い

iPhoneアプリとかサイトとかをつくっていくブログです。

Xcode4からのResourcesの扱いの違いで少しハマった

sqliteのDBファイルをアプリのバンドル内に入れて扱おうと思ったら、うまく動かなかったんですが、どうもリソースとなるファイルの指定方法が若干Xcode3系と4系で違うみたいで、それが原因でした。

Xcode3の時はsqliteファイルをつくって、Xcode上でのプロジェクトのResourcesファイルにぶち込んでおいて、そこのパスを

[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"file.sqlite"];

で得ればよかったんですが、そもそもResourcesフォルダが無い!
(ファイル名:file.sqlite)

解決としては、どの場所でもいいんでプロジェクト内に追加しておいてから、TARGETSの中のCopy Bundle Resourcesで追加しないとダメでした。

+を押してバンドルにコピーするファイルを選びます。

Xcode4になってからあと戸惑ったのは、このプロジェクト内で作成してないクラスファイルを持ってきたときに "Apple Mach-O Linker (id) Error" ってなる事があったんですけど
それも、この画像の上の"Compile Sources"ってところでその.mファイルを追加してあげると通るようになりました。
(このエラーはそれ以外のときにも起こるみたいです)