0

こんにちは、ウェブからダウンロードした写真がたくさんあります。それらをディレクトリに保存したいので、既にダウンロードした写真をリロードする必要はありません。これを行う方法と写真を保存してからリロードする方法を正確に理解するのに苦労していますディレクトリなど。これは私がこれまでに持っているものです。誰かが関連する手順とその方法を説明してもらえますか? ありがとう

-(void) savePhotoInCache: (NSData*) photoToSave{
   //I dont know if u need bundle ID?
   // NSString * bundleID = [[NSBundle mainBundle] bundleIdentifier];
NSFileManager *fm = [[NSFileManager alloc] init];
NSArray * directoryPaths = [fm URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask];
NSLog(@"%@", directoryPaths);
NSURL* dirPath = nil;    
 //Does this create a file in my cache Directory to store my photos?
dirPath = [[directoryPaths objectAtIndex:0] URLByAppendingPathComponent:[NSString stringWithFormat:@"photos.jpg"]];
NSError* theError = nil;
[fm createDirectoryAtURL:dirPath withIntermediateDirectories:YES attributes:nil error:&theError];
// Saves the photo to the file?
[photoToSave writeToURL: dirPath atomically:NO];

NSLog(@"%@", dirPath);
//I get a deprecated warning, new version needs encoding, but I did not specify encoding in writeToURL so what do I use?
NSString * contents = [NSString stringWithContentsOfURL:dirPath ];

//After this how to I access my files and check what the contents of the file are? also, how do I limit the amount of information it stores? thanks

}
4

2 に答える 2

0

check this to how to get saved contents like this:

NSArray *dirContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:dirPath error:nil];

Now filter contains like this:

NSPredicate *fltr = [NSPredicate predicateWithFormat:@"self ENDSWITH '.jpg'"];
NSPredicate *fltr1 = [NSPredicate predicateWithFormat:@"self ENDSWITH '.png'"];
NSArray *onlyJPGs = [dirContents filteredArrayUsingPredicate:fltr];
NSArray *onlyPNGs = [dirContents filteredArrayUsingPredicate:fltr1];

To get all image content

for(NSString *fileName in dirContents)
{
    NSString *imgPath = [dirPath stringByAppendingFormat:fileName];
    UIImage *img = [UIImage imageWithContentsOfFile:imgPath];
    //You have image use it where u want
}

If u have many images then use lazy loading of images

于 2012-08-16T07:17:08.280 に答える
0

すべてを自分で処理する必要はありません。私はむしろ、ほとんどすべてを行うEGO Image Loaderを使用したいと思います。画像をアプリケーション バンドル ディレクトリに保存 (キャッシュ) し、必要なときに再利用します。クラスを調べる限り、画像の URL を主キーとして使用します (キャッシュから画像を取得するため)。かなり高速で非同期です。

プロジェクトに追加して、次のように呼び出すだけです:(これは ARC なので、-release は使用しません)

UIImageView *imageView = [[EGOImageView alloc] initWithPlaceholderImage:[UIImage imageNamed:@"placeholder.png"]];
imageView.frame = CGRectMake(0.0f, 44.0f, 320.0f,54.0f);
imageView.imageURL = [NSURL URLWithString:@"www.example.com/1.jpg"] ;
[self.view addSubview:imageView];

役に立つことを願っています。

于 2012-08-16T06:53:26.323 に答える