Удаление / перезапись файлов изображений на iphone obj c - PullRequest
0 голосов
/ 30 марта 2012

Я пытаюсь удалить или перезаписать изображение в определенном каталоге.Я беру все свои изображения в массив и помещаю в табличное представление.При нажатии на изображение открывается фотопленка, и пользователь выбирает изображение.когда контроллер imagepicker освобождается, я вызываю мои методы, чтобы попытаться удалить исходное изображение и сохранить новое изображение в конкретный путь к файлу.Я получаю странную ошибку при удалении изображения и не уверен, как лучше создать журнал для сохранения изображения, но он также не сохраняется.Буду признателен за вклад!

    - (void)imagePickerController:(UIImagePickerController *)picker   
didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSLog(@"image picker did finish");




widgetImg.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

change.enabled = YES;

[self saveImage:widgetImg.image :ImgName];
NSString *path = [NSString 
stringWithFormat:@"/Library/Themes/%@/iSetUp/UserPhotos/%@",selectedThemeName,ImgName]; 


NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
BOOL fileExists = [fileManager fileExistsAtPath:path];
NSLog(@"Path to file: %@", path);        
NSLog(@"File exists: %d", fileExists);
NSLog(@"Is deletable file at path: %d", [fileManager isDeletableFileAtPath:path]);
if (fileExists) 
{
    BOOL success = [fileManager removeItemAtPath:path error:&error];
    if (!success) NSLog(@"Error: %@", [error localizedDescription]);
}


[self dismissModalViewControllerAnimated:YES]; 



}



- (void)saveImage:(UIImage*)image:(NSString*)imageName {  
//convert image into .png format.  
NSData *imageData = UIImagePNGRepresentation(image);  
NSFileManager *fileManager = [NSFileManager defaultManager];   
NSString *IMGPath = [NSString 
stringWithFormat:@"/Library/Themes/%@/iSetUp/UserPhotos/",selectedThemeName]; 


[fileManager createFileAtPath:IMGPath contents:imageData attributes:nil];  
NSLog(@"image saved"); 

} 


2012-03-29 16:05:05.907 iSetUp[1258:707] image picker did finish
2012-03-29 16:05:09.046 iSetUp[1258:707] image saved
2012-03-29 16:05:09.047 iSetUp[1258:707] Path to file:   
/Library/Themes/Modernistic/iSetUp/UserPhotos/IMG_0183.JPG
2012-03-29 16:05:09.048 iSetUp[1258:707] File exists: 1
2012-03-29 16:05:09.049 iSetUp[1258:707] Is deletable file at path: 0
2012-03-29 16:05:09.053 iSetUp[1258:707] Error: The operation couldn’t be completed.   
(Cocoa error 513.)

Ответы [ 2 ]

1 голос
/ 30 марта 2012

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

NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]
NSString *pathToMenuLoopFile = [rootPath stringByAppendingPathComponent:@"Menu Loop.mp3"];

Если вы хотите загрузить файлы, которые вы включили в свой проект XCode, пожалуйста, посмотрите на этот пост: Загрузка файлов данных в проект iPhone

0 голосов
/ 30 марта 2012

Файл нельзя удалить ни из-за проблем с правами собственности, ни из-за прав доступа.Смотрите обсуждение isDeletableFileAtPath в

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/Reference/Reference.html

...