2013-10-26 3 views
3

UPDATE # 1: забыл упомянуть это работает на приложение IPad-writeToURL не перезаписать предыдущую запись

Это мой пересмотренный код (все еще не работает, но избавились от ненужного кода):

NSURL *tmpDirURL = [NSURL fileURLWithPath:NSTemporaryDirectory() isDirectory:YES]; 
NSURL *fileURL = [[tmpDirURL URLByAppendingPathComponent:@"custImage"] URLByAppendingPathExtension:@"png"]; 

NSError*writeError = nil; 
[client.aClientImage writeToURL:fileURL options:0 error:&writeError]; 
NSAssert(writeError==nil, writeError); 

// write appointment info 
NSString *htmlString; 
if(client.aClientEMail.length > 0) { 
    htmlString = [NSString stringWithFormat:NSLocalizedString(@"HTML_STRING1",nil), 
        client.aClientFirstName, 
        client.aClientLastName, 
        client.aClientEMail.length == 0? @"": client.aClientEMail, 
        client.aClientPrimaryPhone, 
        apptSelected.aServices, 
        fileURL]; 
} 
else { 
    htmlString = [NSString stringWithFormat:NSLocalizedString(@"HTML_STRING2",nil), 
        client.aClientFirstName, 
        client.aClientLastName, 
        client.aClientPrimaryPhone, 
        apptSelected.aServices, 
        fileURL]; 
} 

Когда я смотрю на custImage в XCode отладчика, я вижу другое изображение от предыдущего изображения, что является правильным. Однако, когда он получает время для отображения изображения на fileURL, это совершенно другое изображение, чем custImage и - это то же изображение, что и в первый раз отображается!

ОБНОВЛЕНИЕ № 2: Я выяснил, что файлURL имеет правильное изображение, но он НЕ записывается на устройство во второй раз (первое изображение не заменяется).

UPDATE # 3: это содержимое HTMLString, что отображается в UIWebView пирог:

<html><head><style type="text/css"> body {font-family: "Verdana"; font-size: 12;} </style></head><body> 
<h2>Rolf Marsh</h2><p>phone: 213-555-1234<p>services: Art, Decals<p><img src="file:///private/var/mobile/Applications/FEE7159E-1FF8-4B94-A446-2A4C72E0AD41/tmp/custImage.png"/></body></html> 

Любые предложения о том, как это исправить?

ответ

0

я понял это ... для других, имеют ту же проблему, вот код, который работает. Обратите внимание, что я НЕ сохраняю его во временном файле, так как у меня уже есть изображение в объекте Core Data. Вот код:

-(void) showExistingAppointmentDetails: (AppointmentInfo *) apptSelected { 

// make rectangle to attach popover 
CGRect rectangle = CGRectMake([apptSelected.aPosX floatValue], [apptSelected.aPosY floatValue], 
           [apptSelected.aPosW floatValue], [apptSelected.aPosH floatValue]); 

// see if this is for staff; if so, don't display anything 
if([apptSelected.aApptKey isEqual: @"Staff"]) 
    return; 

NSPredicate *predicate = ([NSPredicate predicateWithFormat: @"aClientKey == %@", apptSelected.aApptKey ]); // was aApptKey 
ClientInfo *client = [ClientInfo MR_findFirstWithPredicate:predicate inContext:localContext]; 

UIImage *image = [UIImage imageWithData:client.aClientImage]; // image is good <--------- 

// write appointment info into html string 
NSString *htmlString; 
if(client.aClientEMail.length > 0) { 
    htmlString = [NSString stringWithFormat:NSLocalizedString(@"HTML_STRING1",nil), 
        client.aClientFirstName, 
        client.aClientLastName, 
        client.aClientEMail.length == 0? @"": client.aClientEMail, 
        client.aClientPrimaryPhone, 
        apptSelected.aServices, 
        [self htmlForPNGImage:image]]; 
} 
else { 
    htmlString = [NSString stringWithFormat:NSLocalizedString(@"HTML_STRING2",nil), 
        client.aClientFirstName, 
        client.aClientLastName, 
        client.aClientPrimaryPhone, 
        apptSelected.aServices, 
        [self htmlForPNGImage:image]]; 

} 

UIViewController* popoverContent = [[UIViewController alloc] init]; 
UIView* popoverView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 250, 300)]; 
popoverView.backgroundColor = [UIColor colorWithWhite:(CGFloat)1.0 alpha:(CGFloat)1.0]; // frame color? 
popoverContent.view = popoverView; 

//resize the popover view shown in the current view to the view's size 
popoverContent.contentSizeForViewInPopover = CGSizeMake(250, 300); 

// add the UIWebView for RichText 
UIWebView *webView = [[UIWebView alloc] initWithFrame:popoverView.frame]; 
webView.backgroundColor = [UIColor whiteColor]; // change background color here 

// add the webView to the popover 
[webView loadHTMLString:htmlString baseURL:[NSURL URLWithString:nil]]; 
[popoverView addSubview:webView]; 

// if previous popoverController is still visible... dismiss it 
if ([popoverController isPopoverVisible]) { 
    [popoverController dismissPopoverAnimated:YES]; 
} 

//create a popover controller 
popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent]; 
[popoverController presentPopoverFromRect:rectangle inView:self 
       permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

} 


- (NSString *) htmlForPNGImage:(UIImage *) image { 

NSData *imageData = UIImagePNGRepresentation(image); 
NSString *imageSource = [NSString stringWithFormat:@"data:image/png;base64,%@",[imageData base64Encoding]]; 
return [NSString stringWithFormat:@"%@", imageSource]; 

} 
1

Вы никогда не записываете данные на диск, насколько я могу видеть.

Только в разделе комментариев вы пытаетесь.

Написать его между:

NSURL *tmpDirURL = [NSURL fileURLWithPath:NSTemporaryDirectory() isDirectory:YES]; 
NSURL *fileURL = [[tmpDirURL URLByAppendingPathComponent:@"custImage"] URLByAppendingPathExtension:@"png"];  
//write 
NSError*writeError = nil; 
[client.aClientImage writeToURL:fileURL options:0 error:&writeError]; 
NSAssert(writeError==nil, writeError); 

//read/use in the html or so 
... 

Не забудьте перезагрузить веб-просмотра или что вы используете, чтобы показать HTML

+0

Я думаю, вы очень близко, но это не исправить ... Я знаю, что ** custImage ** верен, потому что я вижу его в отладчике. Позвольте мне обновить код в исходном вопросе (я нашел много кода, который ничего не делал) – SpokaneDude

+0

убедитесь, что вы видите custImage в вашем finder на диске –

+0

Daij-Djan: это работает на iPad-приложении ... no finder: - { – SpokaneDude

Смежные вопросы