Ich versuche, ein Dokument mit UIDocumentInteractionController in der Vorschau anzuzeigen. Das Dokument ist eine .xls-Datei, die von meiner App aus dem Internet heruntergeladen wird. Ich erhalte diese Fehlermeldung:UIDocumentInteractionController "ungültiges Schema (null)"
'UIDocumentInteractionController: invalid scheme (null). Only the file scheme is supported.'
Ich benutze den nächsten Code:
- (void) webServiceController:(WebServiceController *)webServiceController returnedArray:(NSMutableArray *)array {
if ([webServiceController.webRequest isEqualToString: @"generateExcelFileForEmployee"]) {
// start previewing the document at the current section index
NSString *link = [[NSString stringWithString:array[0]] stringByReplacingOccurrencesOfString:@"AdminFunctions.php" withString:@"AdminFunctions.xls"];
link = [[[link stringByReplacingOccurrencesOfString:@"\\" withString:@""]stringByReplacingOccurrencesOfString:@"/public/sites/" withString:@"http://"]stringByReplacingOccurrencesOfString:@"\"\\\"" withString:@""];
NSLog(@"%@", link);
NSData *urlData = [NSData dataWithContentsOfURL:[NSURL URLWithString:link]];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"AdminFunctions.xls"];
BOOL isWriteSuccess = [urlData writeToFile:filePath atomically:YES];
NSLog(@"%@", filePath);
if(isWriteSuccess) //success
{
file = [NSURL fileURLWithPath:filePath];
self.fileView = [self setupControllerWithURL:file usingDelegate:self];
[self.fileView presentPreviewAnimated:YES];
}
else
{
NSLog(@"file not written");
}
}
}
- (UIDocumentInteractionController *) setupControllerWithURL: (NSURL*) fileURL usingDelegate: (id <UIDocumentInteractionControllerDelegate>) interactionDelegate {
UIDocumentInteractionController *interactionController =
[UIDocumentInteractionController interactionControllerWithURL: fileURL];
interactionController.delegate = interactionDelegate;
return interactionController;
}
- (UIViewController *) documentInteractionControllerViewControllerForPreview: (UIDocumentInteractionController *) controller {
return self;
}
Beiden Methoden in dem Viewcontroller implementiert werden, in dem ich die Vorschau präsentieren will. Ich weiß, dass ich die Daten im urlData
Objekt hart bekomme, weil, wenn ich Haltepunkte einfüge, die Konsole sagt, dass sie 6144 Bytes enthält, was genau die Größe des Dokuments zum Herunterladen ist.
Ich habe seit einer Weile für das ruhige gesucht, aber ich kann nicht scheinen, herauszufinden, wie man das löst. Ich habe bereits versucht, für die documentInteractionController im link
Objekt als Quelle setzen, aber dann die Fehler Änderungen an:
'UIDocumentInteractionController: invalid scheme (http). Only the file scheme is supported.'
Anmerkungen zu, wie ich dieses Problem überwinden kann, wäre sehr
Haben Sie, dass f geprüft ile wurde erfolgreich geschrieben oder nicht, da Sie denselben Dateipfad in UIDocumentInteractionController verwenden? –
Die einzige Möglichkeit, die ich überprüft habe, ist durch NsLogging der Dateipfad, aber das sagt nicht wirklich, ob die Datei gespeichert wurde, oder? Jetzt ist es das erste Mal für mich, einen Document Interaction Controller zu implementieren. Könnten Sie mir bitte erklären, wie Sie das überprüfen können? – Joris416
Ich habe Ihre Frage mit dem Hinzufügen von Vaidation für erfolgreich geschriebene Datei bearbeitet oder nicht. Jetzt ersetzen Sie es und versuchen, was passiert ??? –