J'utilise AFHTTPRequestOperation
pour télécharger un fichier volumineux dans le répertoire Documents de mon périphérique.AFHTTPRequestOperation obtient NSPOSIXErrorDomain "Aucun fichier ou répertoire"
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];
Pour une raison étrange, il fonctionne sur le simulateur pour télécharger les fichiers, mais sur l'appareil (iPhone 6) Je reçois l'erreur suivante:
Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"
L'URL est correcte, comme il télécharge dans mon navigateur correctement et dans le simulateur. Pourquoi cela se passerait-il sur l'appareil? Et qu'est-ce qui pourrait en être la cause?
J'ai essayé de redémarrer mon appareil et de réinitialiser les paramètres réseau.
Trois sources communes de problèmes entre le simulateur et le périphérique incluent: (a) essayer d'écrire en bundle; (b) sensibilité à la casse (macOS n'est généralement pas sensible à la casse, iOS est); et (c) essayer d'accéder aux fichiers en dehors du bac à sable. Si vous nous montrez ce que le chemin était, nous pourrions être en mesure de diagnostiquer ce qui se passe. – Rob
@Rob - Vous voulez connaître le chemin de téléchargement ou le chemin vers lequel j'écris le fichier? –
@Rob - Tu avais raison! Je me suis assuré de créer le répertoire avant le streaming et cela a corrigé le problème! Voulez-vous ajouter cela comme réponse? –