iOS 將網路請求資料轉換成plist檔案
阿新 • • 發佈:2019-02-10
需求設想:
iOS儲存方式有很多,我就不一一說明了,現在我只提到我用到的。
現在有個需求是將部分資料存到本地,並且在沒有網路的情況下能夠檢視資料。
根據這個需求,也就是需要做一個數據本地化儲存。
那麼我們可以想到有呢麼幾種方式:
1.NSUserDefaults
2.CoreData
3.存到Library目錄下(以plist方式儲存、用資料庫方式儲存)
思路解決:
NSUserDefaults 簡單的儲存,不是很實用,只能存點簡單的使用者名稱本地密碼本地等等。
CoreData也是鍵值對的儲存,但是coreData沒用過不是很熟悉,哈哈。
在沙盒建立資料庫到是做過,但是感覺操作有點東西,寫半天東西雖然看起來高大上,但是呢一樣的效果。
那麼最後我就直接將請求下來的資料存到plist然後如果有網路的情況下我就更新下,沒網的情況下我就調plist的東西。
效果:
新增一個按鈕,用來測試
點選按鈕,打印出地址
桌面用command+ shift+g開啟檔案目錄
程式碼:
NSString *soapBody = [NSString stringWithFormat:@"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:jax=\"http://jaxws.webservices.sdoon.com/\"><soapenv:Header><m:auth xmlns:m=\"http://auth.sayhello.HelloWorld2.webservice.cvicse.com\" soapenv:actor=\"http://schemas.xmlsoap.org/soap/actor/next\" soapenv:mustUnderstand=\"0\">aaaaaaaaaaaa</m:auth></soapenv:Header><soapenv:Body><jax:queryByMyItemList><arg0>select distinct ModuleID, ModuleName from DesignInfo_new </arg0></jax:queryByMyItemList></soapenv:Body></soapenv:Envelope>"]; [self.manager yibuPostWithUrl:@"http://10.185.36.13:8082/ylj_shipin/webservice/shipin?wsdl" parameters:soapBody otherStrings:[NetWorkAddress ggaqZdbhdxListHeadParameters] success:^(id responds) { NSString *docPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject; NSString *filePath = [docPath stringByAppendingPathComponent:@"/GGAQ"]; BOOL exist = [[NSFileManager defaultManager] fileExistsAtPath:filePath]; if (!exist) { [[NSFileManager defaultManager] createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:nil]; } NSString *destPath = [filePath stringByAppendingPathComponent:@"showBuilding.plist"]; BOOL save = [responds writeToFile:destPath atomically:YES]; if (save) { NSLog(@"yes"); } NSLog(@"%@",destPath); } failure:^(NSError *error) { NSLog(@"%@",error.localizedDescription); }];
說明:上面這段是請求下來存到plist的程式碼。我請求下來的是字典,存到plist也是字典,呼叫的時候再取出來用就行了。
plist檔案: