2013-02-26 6 views
7

Desidero aprire il file dal Web in altre app.UIDocumentInteractionController e file dal web

Il mio codice:

NSURLRequest *req = [[NSURLRequest alloc] initWithURL:url]; 
[NSURLConnection sendAsynchronousRequest:req queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *resp, NSData *respData, NSError *error){ 
    NSLog(@"resp data length: %i", respData.length); 
    NSArray *names = [objDict[@"name"] componentsSeparatedByString:@"."]; 
    NSString *fileName = [@"downloaded." stringByAppendingString:names[names.count-1]]; 
    NSString * path = [NSTemporaryDirectory() stringByAppendingPathComponent:fileName]; 
    NSError *errorC = nil; 
    BOOL success = [respData writeToFile:path 
       options:NSDataWritingFileProtectionComplete 
        error:&errorC]; 

    if (success) { 
     UIDocumentInteractionController *documentController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:path]]; 
     documentController.delegate = self; 
     [documentController presentOptionsMenuFromRect:CGRectZero inView:self.view animated:YES]; 
    } else { 
     NSLog(@"fail: %@", errorC.description); 
    } 
}]; 

Essa mostra pannello, ma si blocca su clic di un pulsante qualsiasi (non 'Cancellare' solo).

ho attivato gli oggetti zombie e si scrive:

-[UIDocumentInteractionController URL]: message sent to deallocated instance 

risposta

3

Prendete il vostro UIDocumentInteractionController dal blocco NSURLConnectionsendAsynchronousRequest.

Il controller di interazione del documento deve rimanere a lungo dopo che la connessione è stata completata, ma è circoscritto al blocco. Al termine del blocco, non vi sarà alcun riferimento e verrà rilasciato.

5

Ho avuto un problema simile, ma non stavo inizializzando il mio UIDocumentInteractionController all'interno di un blocco. Ho risolto questo problema utilizzando una proprietà nel mio file di interfaccia in modo tale che la classe potesse mantenere fortemente l'istanza di UIDocumentInteractionController.

@property (nonatomic, strong) UIDocumentInteractionController *documentController; 
Problemi correlati