2015-06-16 9 views
8

पर फ़ाइल नहीं लिख रहा है मैं AFNetworking (2.5.4) का उपयोग कर फ़ाइल डाउनलोड करने का प्रयास कर रहा हूं। डाउनलोड पूर्ण हो, पूरा होने हैंडलर, कहा जाता है शून्य करने के लिए सेट त्रुटि है, सब कुछ ठीक प्रतीयमान के साथ है, लेकिन गंतव्य फ़ाइल मौजूद नहीं है:AFNetworking downloadTaskWithRequest: प्रगति: गंतव्य: समापन हैडलर: पथ

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
NSString *fullPath = [valid path from my apps local manager] 
NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:req progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) { 
    return [NSURL URLWithString:fullPath]; 
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) { 
    NSLog(@"Saved file to %@.", filePath); 
    *** [[NSFileManager defaultManager] fileExistsAtPath:filePath.absoluteString] returns NO here *** 
}]; 
[cell.progressView setProgressWithDownloadProgressOfTask:downloadTask animated:YES]; 
[downloadTask resume]; 

फ़ाइल पथ एक नियमित रूप से पथ है कि मेरे ऐप लिखने की एक्सेस है:

/var/mobile/Containers/Data/Application/APP-GUID-REDACTED/Documents/FILE-NAME-REDACTED.docx

मैं AFNetworking से पहले एक भिन्न तरीके से उपयोग कर रहा था, और यह ठीक उसी पथ ठीक करने के लिए लिख सकते हैं। HTTP प्रतिक्रिया शीर्षलेख पूरी तरह से सब कुछ दिखाते हैं (स्थिति 200, सही सामग्री लंबाई आदि) और यदि मैं डाउनलोड यूआरएल को कर्ल करता हूं तो यह फ़ाइल को बिना किसी समस्या के डाउनलोड करता है। फ़ाइल में कोई समस्या नहीं है।

कोई गंतव्य त्रुटियों के बावजूद मेरा गंतव्य फ़ाइल पूरा करने वाले हैंडलर में क्यों नहीं लिखा गया है?

अद्यतन: मैंने AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; भी कोशिश की है लेकिन यह कुछ भी नहीं बदलता है। मैंने NSProgress पॉइंटर बनाने और progress तर्क के लिए भेजने की भी कोशिश की है, लेकिन इसका कोई फायदा नहीं हुआ है।

उत्तर

15

उपयोग [NSURL fileURLWithPath:] (नहीं URLWithString)।

return [NSURL fileURLWithPath:fullPath]; 
+0

यह काम किया। डुनो क्यों दूसरा काम नहीं कर रहा था। –

0

यहां समस्या गलत फ़ाइल पथ या अमान्य फ़ाइल पथ है। मुझे यहाँ एक ही समस्या थी।

पथ बनाएं नीचे दी गई की तरह:

NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil]; 
NSURL *filePathURL = [documentsDirectoryURL URLByAppendingPathComponent:[NSString stringWithFormat:@"your file name here",i]]; 

अब पथ से ऊपर का उपयोग करें:

NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:req progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) { 
    return filePathURL; 
} 
+0

कॉपी-पेस्ट, कुछ भी नहीं बदला। आपका कोड मेरे जैसा सटीक पथ बनाता है, और यह फिर से शून्य है। –