iPhone загрузить и сохранить несколько UIImages с уникальным ключом? - PullRequest
0 голосов
/ 17 ноября 2011

Я знаю, что есть некоторые решения для сохранения и загрузки изображений на ваш iPhone.Однако ни один из них не сработал для меня.

Например, приведенная ниже ссылка имеет большой кусок кода, который позволяет загружать и сохранять UIImage с уникальным ключом, но я не могу понять, как сказать при загрузкеизображение с использованием этого кода, если изображение под этим ключом уже существует или нет.

http://www.friendlydeveloper.com/2010/02/using-nsfilemanager-to-save-an-image-to-or-loadremove-an-image-from-documents-directory-coding/

//saving an image
- (void)saveImage:(UIImage*)image:(NSString*)imageName {
     NSData *imageData = UIImagePNGRepresentation(image); //convert image into .png format.
     NSFileManager *fileManager = [NSFileManager defaultManager];//create instance of NSFileManager
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //create an array and store result of our search for the documents directory in it
     NSString *documentsDirectory = [paths objectAtIndex:0]; //create NSString object, that holds our exact path to the documents directory
     NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", imageName]]; //add our image to the path
     [fileManager createFileAtPath:fullPath contents:imageData attributes:nil]; //finally save the path (image)
     NSLog(@"image saved");
}

//removing an image
- (void)removeImage:(NSString*)fileName {
     NSFileManager *fileManager = [NSFileManager defaultManager];
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
     NSString *documentsDirectory = [paths objectAtIndex:0];
     NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", fileName]];
     [fileManager removeItemAtPath: fullPath error:NULL];
     NSLog(@"image removed");
}

//loading an image
- (UIImage*)loadImage:(NSString*)imageName {
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
     NSString *documentsDirectory = [paths objectAtIndex:0];
     NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", imageName]];
     return [UIImage imageWithContentsOfFile:fullPath];
}

Если бы вы могли помочь мне разобраться с этим, это было бы очень полезно.Мне нужно сохранить несколько изображений и загрузить их в зависимости от того, существует ли данный ключ или нет.

Ответы [ 2 ]

2 голосов
/ 17 ноября 2011

если вы хотите получить изображения с уникальным ключом, попробуйте использовать UUID. Это всегда даст вам изображение с уникальным ключом. Например, вот пример использования UUID.

- (NSString *)pathForImageFileWithPrefix:(NSString *)Prefix
{
    CFUUIDRef   uuid;
    CFStringRef uuidStr;
    uuid = CFUUIDCreate(NULL);
    uuidStr = CFUUIDCreateString(NULL, uuid);
    NSData *imageData = UIImageJPEGRepresentation(chosenImage, 1.0);
    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);   
    NSString* documentsDirectory = [paths objectAtIndex:0]; 
    result = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@_%@.png",Prefix, uuidStr]];
    [imageData writeToFile:result atomically:NO];
    CFRelease(uuidStr);
    CFRelease(uuid);
    return result;
}
0 голосов
/ 17 ноября 2011

Если я правильно понял ваш вопрос, вы хотите знать, существует ли уже файл с данным именем изображения? Тогда вы можете просто использовать

bool fileExists = [NSFileManager defaultManager] fileExistsAtPath:filePath];

...