的問題
我使用AFNetworking,其產生NSURLConnection的對象,上傳照片。NSURLConnection的(如AFNetworking的一部分)不調用NSURLConnectionDataDelegate委託
的NSURLConnection的不是撥打任何電話到
- (void)connection:(NSURLConnection __unused *)connection
didSendBodyData:(NSInteger)bytesWritten
totalBytesWritten:(NSInteger)totalBytesWritten
totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite
方法。 (它是NSURLConnectionDataDelegate protocol的一部分,在NSURLConnection.h中定義)
該請求是一個帶有照片附件(Content-Disposition「form-data」,MIME類型「image/jpeg」)的HTTP POST請求。這應該(我認爲)隨着上傳的進行而定期調用這個方法。
我需要該方法來向用戶顯示進度條。但是,該方法沒有被調用。
注:
- 委託設置正確;其他委託方法被稱爲
- 文件上傳成功
AFNetworking代碼
我敢肯定這是一個NSURLConnection的問題,不是一個AFNetworking問題。
但是爲了以防萬一,這裏是從我的AFHTTPClient
子類中的相關代碼:
NSMutableURLRequest *request = [self multipartFormRequestWithMethod:@"POST" path:path parameters:parameters constructingBodyWithBlock:constructor];
AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure];
if (constructor) {
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
}];
}
[self enqueueHTTPRequestOperation:operation];
我AFHTTPClient子類不覆蓋任何方法我打電話:
multipartFormRequestWithMethod: path: parameters: constructingBodyWithBlock:
HTTPRequestOperationWithRequest: success: failure:
setUploadProgressBlock:
enqueueHTTPRequestOperation:
constructor
是(void (^)(id<AFMultipartFormData>))
類型的塊,而不是nil
(通過代碼步進驗證)。
當我在調試器中鍵入po operation.uploadProgress
時,我看到$0 = 0x1301d9f0 <__NSMallocBlock__: 0x1301d9f0>
,所以我認爲該塊設置正確。
該文件總是上傳成功,但上傳進度模塊中的代碼未運行,所以我的進度欄從不更新。
問題
爲什麼NSURLConnection不是調用這個方法?
NSURLConnection應該如何處理? (它似乎沒有很好的記錄。)
而最重要的是,我怎樣才能向用戶顯示上傳進度?
'class-dump --arch armv7 MyFile'說:「文件不包含指定的架構(armv7)。可用的架構是armv7,armv7s,i386。」但運行'file MyFile'指示armv7,i386和「cputype(12)cpusubtype(11)」。 – 2013-02-21 15:53:51
錯誤消息很不幸誤導(它在我的TODO列表上以解決它)。您必須在您的**應用程序**二進制文件上運行類轉儲,而不是**庫** **二進制文件。 – 0xced 2013-02-21 16:04:10