iPhone: как записать изображение на диск в каталогах приложений - PullRequest
0 голосов
/ 04 марта 2010

Я работаю над проектом iPhone, в котором мне нужно сохранить изображения с камеры на диск и в файл, но приведенный ниже код дает сбой: (************

-(void)imagePickerController:(UIImagePickerController *) picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

[picker dismissModalViewControllerAnimated:YES];
imageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
imgglobal =imageView.image;
NSString *newFilePath = [NSHomeDirectory() stringByAppendingPathComponent: @"~/Users/abc/Library/Application Support/iPhone Simulator/User/Applications/SAVE_IMAGE_TEST1.JPG"]; 
NSData *imageData = UIImageJPEGRepresentation(imageView.image, 1.0);
NSData  *data = imageData;
if (imageData != nil) {
    [imageData writeToFile:newFilePath atomically:YES];
}
if ([[NSFileManager defaultManager] createFileAtPath:@"~/Users/abc/Library/Application Support/iPhone Simulator/User/Applications/SAVE_IMAGE_TEST1.JPG" contents:data attributes:nil])
{
    UIAlertView *successAlert = [[UIAlertView alloc] initWithTitle:@"Success" message:@"Image was successfully saved to the Photo Library." delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil];
    [successAlert show];
    [successAlert release];
} else {
    UIAlertView     *failureAlert = [[UIAlertView alloc] initWithTitle:@"Failure" message:@"Failed to save image to the Photo Library." delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil];
    [failureAlert show];
    [failureAlert release];
}       
}

1 Ответ

3 голосов
/ 04 марта 2010

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

Вместо этого используйте:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *pathToDocuments=[paths objectAtIndex:0];

Возвращает текущий путь к каталогу документов приложения независимо от того, где он запущен или что изменилось.

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

...