0

ドキュメントディレクトリに「2」という名前のフォルダーがあります。フォルダー「2」には、0.png、1.png、2.png、3.png、4.png という名前の 5 つの画像があります。これらの画像を取得して配列に保存したいと思います。コードはありますが、返される画像は 1 つだけです。

int b=2;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,     NSUserDomainMask, YES);
NSLog(@"%@",paths);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%d/0.png",b]];
UIImage *img = [UIImage imageWithContentsOfFile:getImagePath];
NSLog(@"%@",getImagePath);
imge.image=img;
4

2 に答える 2

1

画像をループする必要があります。

int b=2;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,     NSUserDomainMask, YES);
NSLog(@"%@",paths);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSMutableArray *images = [NSMutableArray arrayWithCapacity:5];

for (int i = 0; i < 5; i++)
{
   NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:[NSString     stringWithFormat:@"%d/%d.png",b, i]];
   UIImage *img = [UIImage imageWithContentsOfFile:getImagePath];
   [images addObject:img];
   NSLog(@"%@",getImagePath);
   imge.image=img;
}

Dominik が提案したように、画像ファイルの数と名前をハードコーディングする代わりに、contentsOfDirectoryAtPath:error: を使用してそのディレクトリ内のファイルのリストを取得する必要があります。

NSError *error = nil;
NSArray *imageFileNames = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%d",b]] error:&error];
于 2013-07-19T13:56:05.940 に答える
1

次のような NSFileManager を使用するだけです。

[[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:&error];

指定されたパス内のすべてのファイルのすべてのファイル パスを含む配列が提供されます。


これは、URL の配列から画像をロードする方法です。

NSArray *paths = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:&error];
for (NSURL *url in paths)
{
    UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];
}
于 2013-07-19T13:56:13.863 に答える