1. 程式人生 > >iOS 將網路請求資料轉換成plist檔案

iOS 將網路請求資料轉換成plist檔案

需求設想:

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檔案: