次のようにして、ファイル名の配列を取得し、別の配列に画像自体を入力することができます(それがあなたがやろうとしていたことだと仮定します)。
NSMutableArray *imagePaths = [[NSMutableArray alloc] init];
NSMutableArray *images = [[NSMutableArray alloc] init];
NSArray *imageTypes = [NSArray arrayWithObjects:@"jpg", @"jpeg", @"gif", nil];
// load the imagePaths array
for (NSString *imageType in imageTypes)
{
NSArray *imagesOfParticularType = [[NSBundle mainBundle]pathsForResourcesOfType:imageType
inDirectory:@"Images"];
if (imagesOfParticularType)
[imagePaths addObjectsFromArray:imagesOfParticularType];
}
// load the images array
for (NSString *imagePath in imagePaths)
[images addObject:[UIImage imageWithContentsOfFile:imagePath]];
余談ですが、これらが小さなサムネイル画像であり、数が非常に少ない場合を除いて、通常、このようにすべての画像を一度に読み込むことはお勧めできません。一般に、画像は大量のRAMを使用する可能性があるため、ファイル名の配列は保持しますが、実際に必要になるまで画像の読み込みを延期します。
画像を正常に取得できない場合は、次の2つの質問があります。
ファイルは私のバンドルに含まれていますか?ターゲットの設定で[ビルドフェーズ]を選択し、[バンドルリソースのコピー]を展開すると(下の画像を参照)、画像が含まれていることがわかりますか?このリストに画像が表示されていない場合は、ビルド時にアプリに含まれません。画像を追加するには、「+」をクリックしてこのリストに追加します。
ファイルは「グループ」にありますか、それとも実際のサブディレクトリにありますか?プロジェクトにファイルを追加すると、次のダイアログが表示されます。
[追加したフォルダーのフォルダー参照を作成する]を選択した場合、プロジェクトではフォルダーが青色で表示されます(db_images
前の画面のスナップショットの["]フォルダーの横にある青いアイコンを参照してください)。ただし、「追加されたフォルダのグループを作成する」を選択した場合は、「Images
」グループの横に通常の黄色のアイコンが表示されます。結論として、このシナリオでは、サブディレクトリ " Images
"で画像を検索する場合、[追加されたフォルダのフォルダ参照を作成する]オプションを使用して、画像の横に青いアイコンを表示します。
結論として、画像がアプリバンドルに含まれていること、および画像が思いどおりの場所にあることを確認する必要があります。また、iOSでは大文字と小文字が区別されることに注意してください(ただし、シミュレーターでは区別されません)。そのため、「Images
」の大文字と小文字を正しく区別してください。