0

我想問一下,所以我已經使用了一個web服務api,並將其序列化爲一個可觀察的Model集合。將Json/Web Services序列化爲Observable Collection模型

我的問題是我如何在任何地方使用這個可觀察集合,所以我不必每次都從Web服務調用/獲取/使用?

那麼只需調用一次api,然後每次都可以使用這些數據而無需再次使用callng API?

感謝

回答

0

由於@thang上面提到有很多方法可以在應用程序中存儲數據以消除每次調用Web服務。

我會建議你我這樣做的方式:

1.當我檢索來自網絡API,我也解析來觀察的集合JSON數據:

ObservableCollection<User> usersList = JsonConvert.DeserializeObject<ObservableCollection<User>>(responseJson).Users; 

2.接通我有我的名單我還可以保存序列化對象(JSON格式)文本文件(記住,JSON是沒有別的喜歡的字符串):

private async void saveUsersToFile(string serializedUsersListAsJson) 
{ 
    StorageFolder storageFolder = ApplicationData.Current.LocalFolder; 
    StorageFile usersFile = await storageFolder.CreateFileAsync("users.txt", CreationCollisionOption.OpenIfExists); 
    await FileIO.WriteTextAsync(usersFile, serializedUsersListAsJson); 
} 

這個步驟可以讓你存儲數據,即使應用程序已接近d並重新啓動。

3.當您啓動,你可以調用下面的方法來從文件中讀取數據的應用程序:

private async void retrieveNotes() 
{ 
    StorageFolder storageFolder = ApplicationData.Current.LocalFolder; 
    StorageFile usersFile = await storageFolder.CreateFileAsync("users.txt", CreationCollisionOption.OpenIfExists) 
    string serializedUsersList = await FileIO.ReadTextAsync(usersFile); 

    // Deserialize JSON list to the ObservableCollection: 
    if(serializedUsersList!=null) 
    { 
     var usersList= JsonConvert.DeserializeObject<ObservableCollection<User>>(serializedUsersList); 
    } 

4.Last步驟是聲明在網頁觀察的集合字段,您需要使用它。例如,如果你需要傳遞你可以使用頁面之間此列表:

Frame.Navigate(typeof(MainPage), usersList); 

記得有一次應用啓動從文件中讀取數據。之後,您可以在應用程序運行時使用它。我的建議是每次連接Web Api以檢索新數據時緩存數據。

希望這會有所幫助。如果您想了解更多關於數據存儲,請閱讀以下職位上我的博客:

https://mobileprogrammerblog.wordpress.com/2016/05/23/universal-windows-10-apps-data-storage/

+0

感謝您的解決方案隊友 –

0

要爲下一次用戶數據打開應用程序

存放在本地SQLite數據庫中的數據,或連載收集到本地文件以供以後使用。

要在同一個版面中常見的對象使用數據

Store中的數據,並且每次你需要初始化視圖模型

爲了在10場設備使用數據的時間檢索

  • 存儲文件/數據庫OneDrive,需要
  • 如果數據大小時同步很小,你不需要有100%的同步數據,將其存儲在漫遊文件夾內
+0

如果我想在不同的章節/頁使用?我應該使用sqlite嗎? –

+0

如果你想在多個部分/頁面中使用集合,只需將數據保存在可從這些部分訪問的對象中 - >即一個名爲「cache」的靜態類,該靜態類可保存對該集合的引用。這是waht @ thang2410199,意思是「將數據存儲在一個通用對象中[...]」。 – TryToSolveItSimple

+0

嗨,它通常是我的意思,但我離開實施爲你做。 – thang2410199