我已经成功实现了 NSURLSessionUploadTask 并在后台和前台工作。但是读取响应数据时出现问题。
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data{
NSLog(@"1 DATA:\n%@\nEND DATA\n", [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]);
[self.responseData appendData:data];
}
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
{
if (!error) {
NSLog(@"AT THE END DATA:\n%@\nEND DATA\n", [[NSString alloc] initWithData: self.responseData encoding: NSUTF8StringEncoding]);
[self parsingJSONResponse:self.responseData];
} else {
NSLog(@"HTTP uploading error : %@", error);
}
}
这些是上述两个 NSLog 的输出
1 数据:{"成功":true,"数据":[{"uuid":"8BE7DF37-9DA1-44D2-B48C-D012F699A9B1","id":266626},{"uuid":"3406D865-1A41-4FC6 -BA0B-0638F17757CC","id":266656}],"errors":[],"entityName":"LeadProfile"} 结束数据
最后数据:{"success":true,"data":[{"uuid":"8BE7DF37-9DA1-44D2-B48C-D012F699A9B1","id":266626},{"uuid":"3406D865-1A41 -4FC6-BA0B-0638F17757CC","id":266656}],"errors":[],"entityName":"LeadProfile"}{"success":true,"data":[{"uuid":"8BE7DF37 -9DA1-44D2-B48C-D012F699A9B1","id":266626},{"uuid":"3406D865-1A41-4FC6-BA0B-0638F17757CC","id":266656}],"errors":[]," entityName":"LeadProfile"} 结束数据
我想知道为什么这会给我一个上传任务两个不同的响应。self.responseData
每个位置有什么不同?
有人认为这是因为苹果网站上提到的原因吗?(因为 NSData 对象通常是由许多不同的数据对象拼凑而成的,所以尽可能使用 NSData 的 enumerateByteRangesUsingBlock: 方法来遍历数据而不是使用 bytes 方法(它将 NSData 对象扁平化为单个内存块)开发人员。苹果网