2009-05-27 8 views
3

私はプロジェクトに(既存ファイルを追加するオプションを使用して)一連のフォルダを追加しました。これにより、Xcodeにフォルダの内容が青色のフォルダとして表示されます。バンドルとファイルアクセス

次作品:

NSString *imageName = [NSString stringWithFormat:@"/File-03/images/image-%02d.jpg", imageIndex]; 

return [UIImage imageNamed:imageName]; 

しかし、私は、画像がキャッシュされませんので、imageWithContentsOfFileを使用してに切り替えたいです。

のコードは、下の画像のためのnilを返します。

return [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"/File-03/images/image-%02d.jpg", imageIndex]]; 

は、私はまた、バンドル、ノー行くを使用してimageWithContentsOfFileにアクセスしようとしました。

私はここで何が欠けていますか?

答えて

4

さて、私は私が必要なものを手に入れるコード1つの方法を考え出し:

NSString *dir = [NSString stringWithFormat:@"File-03/images", imageIndex]; 
    NSString *file = [NSString stringWithFormat:@"image-%02d", imageIndex]; 
    NSString *path = [[NSBundle mainBundle] pathForResource:file ofType:@"jpg" inDirectory:dir]; 

    return = [UIImage imageWithContentsOfFile:path]; 

トリックがバンドルコールにinDirectoryにしました。

+0

NSString * dir = @ "File-03/images"; 十分である必要がありますか? –

6

iPhoneでファイルにアクセスして保存するには、thisとお読みください。

Erica Sadunは、アプリのバンドル内のファイルにアクセスするのに便利なshortyも書いています。

ファイルがXcodeでどのように整理されているかは、アプリケーションバンドルでどのように結びつくかを示していないことに注意してください。最善の方法は、Finderでアプリケーションバンドルを選択し、Ctrlキーを押しながらクリックし、パッケージ内容を表示を選択することです。

+1

パッケージコンテンツを表示してコンテンツをバンドルに追加するとどうなりますか? –

+0

codesignを壊してデバイス上で動作しないと思ってください。 – epatel

1

imageWithContentsOfFileコードの問題は、/がバンドルのルートであると仮定していることです.FSのルートです。

だから、pathForResource:ofType:inDirectory:はおそらく、必要なパスを取得する最も簡単な方法です。

それ以外の場合は、バンドルのルートを取得してパスにプレフィックスを付けることができます。

関連する問題