1. 程式人生 > >EA&UML日拱一卒-微信小程式實戰:位置鬧鈴 (17)-儲存和取出設定資訊

EA&UML日拱一卒-微信小程式實戰:位置鬧鈴 (17)-儲存和取出設定資訊

設定了監控點之後,小程式會取得最新位置,判斷各個監控點的到達,離開情況並播放提示音。很多情況下,使用者會希望這些資訊可以儲存起來以便將來使用。

這就是今天的主題:在小程式中儲存設定資訊。

API

位置鬧鈴使用微信小程式API中以下的資料快取介面儲存設定資訊,本節內容來自微信小程式開發文件。

wx.setStorageSync(KEY,DATA)

將 data 儲存在本地快取中指定的 key 中,會覆蓋掉原來該 key 對應的內容,這是一個同步介面。

引數說明:

引數型別必填說明
keyString本地快取中的指定的 key
dataObject/String需要儲存的內容

wx.getStorageSync(KEY)

從本地快取中同步獲取指定 key 對應的內容。

引數說明:

引數型別必填說明
keyString本地快取中的指定的 key

程式碼實現

設定資訊

儲存操作的物件是Alarm陣列,每個Alarm物件的結構如下:


上半部分是資料成員,下半部分是prototype。需要儲存的是資料成員部分。稍微注意一下原型資訊,它列出了Alarm類的方法,表明這個資料是一個Alarm物件。

儲存資料

只要一行程式碼。

wx.setStorageSync('alarms',this.globalData.alarms)

只是這麼一個簡單的操作,所有資料都可以被儲存。嚴格地講,表示狀態的部分是不需要儲存的,但是為了處理簡單這裡就不做區分了。

取出資料

如果是一般的情況,也是隻要一行。

this.globalData.alarms = wx.getStorageSync('alarms') || []

這是取出地資料是這樣的:

物件屬性資料的部分和儲存時是一樣的;下面的prototype部分不一樣的。原因應該是API不認識Alam類,所以儲存和取出時只是作為一般物件來處理。

為了解決這個問題,位置鬧鈴在取出資料時進行了如下處理:

varthat =this

varalarm_array = wx.getStorageSync('alarms') || []

   alarm_array.forEach(function(alarm_data){

     that.globalData.alarms.push(

newAlarm(alarm_data));

   })

首先作為一般的資料物件取出,然後根據資料物件建立Alarm物件。

參考資料

wx.setStorageSync

https://mp.weixin.qq.com/debug/wxadoc/dev/api/data.html#wxsetstoragesynckeydata

wx.getStorageSync

https://mp.weixin.qq.com/debug/wxadoc/dev/api/data.html#wxgetstoragesynckey

位置鬧鈴原始碼

https://github.com/xueweiguo/alarmmap

寫在文章的最後

既然已經讀到這裡了,拜託大家再用一分鐘時間,將文章轉發到各位的朋友圈,微信群中。本公眾號的成長需要您的支援!以上就是今天的文章,歡迎點贊並推薦給您的朋友!閱讀更多更新文章,請掃描下面二維碼,關注微信公眾號【面向物件思考】