2016-03-31 1 views
0

Это мой метод сохранения:Данные ноль из строки изображения.

-(NSString *)saveImage:(UIImage *)image 
{ 
    NSInteger RandomIndex = arc4random() % 1000; 
    NSString *randomImageName =[NSString stringWithFormat:@"Image%i.png",RandomIndex]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:randomImageName]; 
    if ([[NSFileManager defaultManager] fileExistsAtPath:savedImagePath]) { 
     [[NSFileManager defaultManager] removeItemAtPath:savedImagePath error:nil]; 
     NSLog(@"file removed from path"); 
    } 
    NSLog(@"Saved Image Path : %@",savedImagePath); 
    NSData* imageData = UIImagePNGRepresentation (image); 
    [imageData writeToFile:savedImagePath atomically:YES]; 

    self.teamLogo = savedImagePath; 

    return savedImagePath; 
} 

Я пытаюсь загрузить изображение и поместить в систему управления:

NSData *myData = [NSData dataWithContentsOfFile:self.team.logo]; 
    UIImage *selectedImage = [UIImage imageWithData:myData]; 

self.team.logo от БД. Я держу строку в базе. В режиме отладки я получил эту строку:

/var/mobile/Containers/Data/Application/7CD69EC9-9C20-48EE-B611-FC2353BC31B0/Documents/Image364.png

и MyData по-прежнему равна нулю. У вас есть идея, почему?

+1

Есть ли файл? Он содержит данные? – Wain

+0

Да. Я загрузил контейнер, а внутри - файл Image364.png, и я могу его открыть. Выглядит хорошо – hds

+0

'self.team.logo' извлекается после выполнения« перекомпиляции »? Вы говорите о «БД», поэтому я предполагаю, что путь изменился. Вы должны сохранить только то, что после Документов /, и снова отстроить его оттуда, используя материал NSDocumentDirectory. Например, сохраните два изображения между «перекомпилировать» и сравните то, что находится между '/ Application /' и '/ Documents /', вы поймете. – Larme

ответ

0

Начиная с IOS 8 расположение контейнеров изменилось. Поэтому не сохраняйте полный путь к вашей БД. Вместо этого просто сохраните свое имя изображения. Для напоминания об использовании изображения:

NSString *temp = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"Image364.png"]; 
NSData *myData = [NSData dataWithContentsOfFile:temp]; 
UIImage *selectedImage = [UIImage imageWithData:myData]; 

Надеюсь, это поможет.