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);
}
}
これらは、上記の 2 つの NSLog の出力です
1 データ: {"success":true,"data":[{"uuid":"8BE7DF37-9DA1-44D2-B48C-D012F699A9B1","id":266626},{"uuid":"3406D865-1A41-4FC6 -BA0B-0638F17757CC","id":266656}],"エラー":[],"entityName":"LeadProfile"} END DATA
最後のデータ: {"success":true,"data":[{"uuid":"8BE7DF37-9DA1-44D2-B48C-D012F699A9B1","id":266626},{"uuid":"3406D865-1A41 -4FC6-BA0B-0638F17757CC","id":266656}],"エラー":[],"entityName":"LeadProfile"}{"成功":true,"データ":[{"uuid":"8BE7DF37 -9DA1-44D2-B48C-D012F699A9B1","id":266626},{"uuid":"3406D865-1A41-4FC6-BA0B-0638F17757CC","id":266656}],"エラー":[]," entityName":"LeadProfile"} END DATA
1 つのアップロード タスクに対して 2 つの異なる応答が返されるのはなぜでしょうか。場所ごとにどのようself.responseData
に異なるのでしょうか?
これは、Apple Web サイトに記載されている理由によるものだと思う人はいますか? (NSData オブジェクトは多くの場合、多数の異なるデータ オブジェクトから結合されるため、可能な場合は常に、bytes メソッド (NSData オブジェクトを 1 つのメモリ ブロックにフラット化する) を使用するのではなく、NSData の enumerateByteRangesUsingBlock: メソッドを使用してデータを反復処理します。 apple.com