国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS11 下載之斷點續傳的bug的解決方法

2020-07-26 02:38:23
字體:
來源:轉載
供稿:網友

iOS11發布之后,可能很多帶有下載功能的APP都會躺槍(ps:埋怨蘋果爸爸幾秒鐘)。因為原先用來做斷點續傳的resumeData里帶上了一個新值,而這個新值的出現,會導致幾次暫停操作后下載任務task讀取數據不對,而且在文件還沒下載完時就會調用下載完成時的代理方法,導致下載出錯。下面就來說說解決的辦法。

第一種方法:暫停時不調用[task cancelByProducingResumeData:^(NSData *resumeData){ }];而是調用suspend線程掛起的方法,可解決這個問題。

第二種方法:去除resumeData里的新值。

1:第一步:先把resumeData轉成string。

 NSString *dataString =[[NSString alloc]initWithData:resumeData encoding:NSUTF8StringEncoding];

2:第二步:再去除里面的新值

 NSString *string =[self cleanResumeDataWithString:dataString];-(NSString *)cleanResumeDataWithString:(NSString *)dataString {  if([dataString containsString:@"<key>NSURLSessionResumeByteRange</key>"]) {    NSRange rangeKey = [dataString rangeOfString:@"<key>NSURLSessionResumeByteRange</key>"];    NSString *headStr = [dataString substringToIndex:rangeKey.location];    NSString *backStr = [dataString substringFromIndex:rangeKey.location];        NSRange rangeValue = [backStr rangeOfString:@"</string>/n/t"];    NSString *tailStr = [backStr substringFromIndex:rangeValue.location + rangeValue.length];    dataString = [headStr stringByAppendingString:tailStr];      }  return dataString;}

第3步:把string轉成新的resumeData。

resumeData =[string dataUsingEncoding:NSUTF8StringEncoding];

后記:第一種方法相對簡單,第二種相對有難度些。小伙伴可根據情況酌情使用。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丰城市| 家居| 阳曲县| 克什克腾旗| 黄石市| 晋中市| 铁岭市| 慈溪市| 潢川县| 电白县| 湖口县| 杭州市| 平南县| 三台县| 巨野县| 自治县| 茶陵县| 华安县| 荃湾区| 泸州市| 阳高县| 如东县| 晋宁县| 盘山县| 贵港市| 南部县| 安达市| 林州市| 武夷山市| 合川市| 莆田市| 宜黄县| 明光市| 潜江市| 固镇县| 高碑店市| 平湖市| 洛浦县| 龙游县| 靖西县| 同心县|