Ich verwende AFHTTPRequestOperation
, um eine große Datei in das Documents-Verzeichnis auf meinem Gerät herunterzuladen.AFHTTPRequestOperation ruft NSPOSIXErrorDomain ab "Keine solche Datei oder Verzeichnis"
NSURLRequest *request = [NSURLRequest requestWithURL:vectorFile.url];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
NSString *path = [self pathForFileName:vectorFile.fileName];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:NO];
[operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
double percentDone = (double)totalBytesRead/(double)totalBytesExpectedToRead;
progress(percentDone, totalBytesRead, totalBytesExpectedToRead);
}];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
NSString *path = [self pathForFileName:vectorFile.fileName];
extracting();
[SSZipArchive unzipFileAtPath:path toDestination:[self path] progressHandler:^(NSString *entry, unz_file_info zipInfo, long entryNumber, long total) {
NSLog(@"Unzipping");
} completionHandler:^(NSString *path2, BOOL succeeded, NSError *error) {
if (!error) {
NSLog(@"Successfully downloaded file to %@", path);
dispatch_async(dispatch_get_main_queue(), ^{
completion(YES);
});
} else {
NSLog(@"%@", error);
failure(error);
}
}];
});
} failure:^(AFHTTPRequestOperation * _Nonnull operation, NSError * _Nonnull error) {
NSLog(@"%@", error);
failure(error);
}];
[operation start];
Aus irgendeinem seltsamen Grund, es funktioniert auf dem Simulator zum Download der Dateien, sondern auf dem Gerät (iPhone 6) ich folgende Fehlermeldung erhalten:
Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"
Die URL ist richtig, wie Es wird in meinem Browser korrekt und im Simulator heruntergeladen. Warum würde das nur auf dem Gerät passieren? Und was könnte das verursachen?
Ich habe versucht, mein Gerät neu zu starten und Netzwerkeinstellungen zurückzusetzen.
Drei häufige Ursachen für Probleme zwischen Simulator und Gerät sind: (a) Versuchen, zu bündeln; (b) Groß-/Kleinschreibung (macOS ist im Allgemeinen nicht case sensitive; iOS ist); und (c) versuchen, auf Dateien außerhalb der Sandbox zuzugreifen. Wenn Sie uns zeigen, was der Pfad ist, können wir möglicherweise diagnostizieren, was vor sich geht. – Rob
@Rob - Sie möchten den Downloadpfad oder den Pfad, in den ich die Datei schreibe, wissen? –
@Rob - Du hattest Recht! Ich habe darauf geachtet, das Verzeichnis zuerst zu erstellen, bevor es streamt und das hat das Problem behoben! Möchten Sie das als Antwort hinzufügen? –