色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙開發接口數據管理:【@ohos.data.preferences (首選項)】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-06-10 18:46 ? 次閱讀

首選項

首選項為應用提供key-value鍵值型的數據處理能力,支持應用持久化輕量級數據,并對其修改和查詢。數據存儲形式為鍵值對,鍵的類型為字符串型,值的存儲數據類型包括數字型、字符型、布爾型。

說明: 本模塊首批接口從API version 9開始支持。后續版本的新增接口,采用上角標單獨標記接口的起始版本。 開發前請熟悉鴻蒙開發指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

導入模塊

import data_preferences from '@ohos.data.preferences';

常量

系統能力: 以下各項對應的系統能力均為SystemCapability.DistributedDataManager.Preferences.Core

名稱參數類型可讀可寫說明
MAX_KEY_LENGTHstringkey的最大長度限制,需小于80字節。
MAX_VALUE_LENGTHstringvalue的最大長度限制,需小于8192字節。

data_preferences.getPreferences

getPreferences(context: Context, name: string, callback: AsyncCallback): void

讀取指定首選項持久化文件,將數據加載到Preferences實例,用于數據操作,該方法使用callback方式作為異步方法。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名類型必填說明
context[Context]應用程序或功能的上下文。
namestring應用程序內部數據存儲名稱。
callbackAsyncCallback<[Preferences]>回調函數。

示例:

data_preferences.getPreferences(this.context, 'mystore', function (err, preferences) {
    if (err) {
        console.info("Get preferences failed.")
        return;
    }
    console.info("Get preferences successfully.")
})

data_preferences.getPreferences

getPreferences(context: Context, name: string): Promise

讀取指定首選項持久化文件,將數據加載到Preferences實例,用于數據操作,該方法使用Promise方式作為異步方法。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名類型必填說明
context[Context]應用程序或功能的上下文。
namestring應用程序內部數據存儲名稱。

返回值:

類型說明
Promise<[Preferences]>Promise實例,用于異步獲取結果。

示例:

let promise = data_preferences.getPreferences(this.context, 'mystore')
promise.then((preferences) = > {
    console.info("Get preferences successfully.")
}).catch((err) = > {
    console.info("Get preferences failed.")
})

data_preferences.deletePreferences

deletePreferences(context: Context, name: string, callback: AsyncCallback): void

從內存中移除指定首選項持久化文件對應的Preferences單實例,并刪除指定文件及其備份文件和損壞文件。 刪除指定首選項持久化文件時,應用不允許再使用該實例進行數據操作,否則會出現數據一致性問題,該方法使用callback方式作為異步方法。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名類型必填說明
context[Context]應用程序或功能的上下文。
namestring應用程序內部數據存儲名稱。
callbackAsyncCallback回調函數。

示例:

data_preferences.deletePreferences(this.context, 'mystore', function (err) {
    if (err) {
        console.info("Deleted preferences failed, err: " + err)
        return
    }
    console.info("Deleted preferences successfully.")
})

data_preferences.deletePreferences

deletePreferences(context: Context, name: string): Promise

從內存中移除指定首選項持久化文件對應的Preferences單實例,并刪除指定文件及其備份文件和損壞文件。 刪除指定首選項持久化文件時,應用不允許再使用該實例進行數據操作,否則會出現數據一致性問題,該方法使用Promise方式作為異步方法。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名類型必填說明
context[Context]應用程序或功能的上下文。
namestring應用程序內部數據存儲名稱。

返回值:

類型說明
PromisePromise實例,用于異步獲取結果。

示例:

let promise = data_preferences.deletePreferences(this.context, 'mystore')
promise.then(() = > {
    console.info("Deleted preferences successfully.")
}).catch((err) = > {
    console.info("Deleted preferences failed, err: " + err)
})

data_preferences.removePreferencesFromCache

removePreferencesFromCache(context: Context, name: string, callback: AsyncCallback): void

從內存中移除指定首選項持久化文件對應的Preferences單實例。

移除Preferences單實例時,應用不允許再使用該實例進行數據操作,否則會出現數據一致性問題,該方法使用callback方式作為異步方法。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名類型必填說明
context[Context]應用程序或功能的上下文。
namestring應用程序內部數據存儲名稱。
callbackAsyncCallback回調函數。

示例:

data_preferences.removePreferencesFromCache(this.context, 'mystore', function (err) {
    if (err) {
        console.info("Removed preferences from cache failed, err: " + err)
        return
    }
    console.info("Removed preferences from cache successfully.")
})

data_preferences.removePreferencesFromCache

removePreferencesFromCache(context: Context, name: string): Promise

從內存中移除指定首選項持久化文件對應的Preferences單實例。

移除Preferences單實例時,應用不允許再使用該實例進行數據操作,否則會出現數據一致性問題,該方法使用Promise方式作為異步方法。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名類型必填說明
context[Context]應用程序或功能的上下文。
namestring應用程序內部數據存儲名稱。

返回值:

類型說明
PromisePromise實例,用于異步獲取結果。

示例:

let promise = data_preferences.removePreferencesFromCache(this.context, 'mystore')
promise.then(() = > {
    console.info("Removed preferences from cache successfully.")
}).catch((err) = > {
    console.info("Removed preferences from cache failed, err: " + err)
})

Preferences

提供獲取和修改存儲數據的接口。

get

get(key: string, defValue: ValueType, callback: AsyncCallback): void

獲取鍵對應的值,如果值為null或者非默認值類型,返回默認數據,該方法使用callback方式作為異步方法。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名類型必填說明
keystring要獲取的存儲key名稱,不能為空。
defValue[ValueType]默認返回值。支持number、string、boolean。
callbackAsyncCallback回調函數。

示例:

preferences.get('startup', 'default', function(err, value) {
    if (err) {
        console.info("Get value of startup failed, err: " + err)
        return
    }
    console.info("Get value of startup is " + value)
})

get

get(key: string, defValue: ValueType): Promise

獲取鍵對應的值,如果值為null或者非默認值類型,返回默認數據,該方法使用Promise方式作為異步方法。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

  • 參數:
    參數名類型必填說明
    keystring要獲取的存儲key名稱,不能為空。
    defValue[ValueType]默認返回值。支持number、string、boolean。

返回值:

類型說明
PromisePromise實例,用于異步獲取結果。

示例:

let promise = preferences.get('startup', 'default')
promise.then((value) = > {
    console.info("Get value of startup is " + value)
}).catch((err) = > {
    console.info("Get value of startup failed, err: " + err)
})

getAll

getAll(callback: AsyncCallback ): void;

返回含有所有鍵值的Object對象。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名類型必填說明
callbackAsyncCallback回調函數。返回含有所有鍵值的Object對象。

示例:

preferences.getAll(function (err, value) {
    if (err) {
        console.info("getAll failed, err: " + err)
        return
    }
    let keys = Object.keys(value)
    console.info('getAll keys = ' + keys)
    console.info("getAll object = " + JSON.stringify(value))
});

getAll

getAll(): Promise

返回含有所有鍵值的Object對象。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

返回值:

類型說明
PromisePromise對象。返回含有所有鍵值的Object對象。

示例:

let promise = preferences.getAll()
promise.then((value) = > {
    let keys = Object.keys(value)
    console.info('getAll keys = ' + keys)
    console.info("getAll object = " + JSON.stringify(value))
}).catch((err) = > {
    console.info("getAll failed, err: " + err)
})

put

put(key: string, value: ValueType, callback: AsyncCallback): void

首先獲取指定首選項持久化文件對應的Preferences實例,然后借助Preferences API將數據寫入Preferences實例,通過flush或者flushSync將Preferences實例持久化,該方法使用callback方式作為異步方法。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名類型必填說明
keystring要修改的存儲的key,不能為空。
value[ValueType]存儲的新值。支持number、string、boolean。
callbackAsyncCallback回調函數。

示例:

preferences.put('startup', 'auto', function (err) {
    if (err) {
        console.info("Put value of startup failed, err: " + err)
        return
    }
    console.info("Put value of startup successfully.")
})

put

put(key: string, value: ValueType): Promise

首先獲取指定首選項持久化文件對應的Preferences實例,然后借助Preferences API將數據寫入Preferences實例,通過flush或者flushSync將Preferences實例持久化,該方法使用Promise方式作為異步方法。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名類型必填說明
keystring要修改的存儲的key,不能為空。
value[ValueType]存儲的新值。支持number、string、boolean。

返回值:

類型說明
PromisePromise實例,用于異步處理。

示例:

let promise = preferences.put('startup', 'auto')
promise.then(() = > {
    console.info("Put value of startup successfully.")
}).catch((err) = > {
    console.info("Put value of startup failed, err: " + err)
})

has

has(key: string, callback: AsyncCallback): void

檢查存儲對象是否包含名為給定key的存儲鍵值對,該方法使用callback方式作為異步方法。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名類型必填說明
keystring要檢查的存儲key名稱,不能為空。
callbackAsyncCallback回調函數。返回存儲對象是否包含給定key的存儲鍵值對,true表示存在,false表示不存在。

示例:

preferences.has('startup', function (err, isExist) {
    if (err) {
        console.info("Check the key of startup failed, err: " + err)
        return
    }
    if (isExist) {
        console.info("The key of startup is contained.")
    } else {
        console.info("The key of startup dose not contain.")
    }
})

has

has(key: string): Promise

檢查存儲對象是否包含名為給定key的存儲鍵值對,該方法使用Promise方式作為異步方法。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名類型必填說明
keystring要檢查的存儲key名稱,不能為空。

返回值:

類型說明
PromisePromise對象。返回存儲對象是否包含給定key的存儲鍵值對,true表示存在,false表示不存在。

示例:

let promise = preferences.has('startup')
promise.then((isExist) = > {
    if (isExist) {
        console.info("The key of startup is contained.")
    } else {
        console.info("The key of startup dose not contain.")
    }
}).catch((err) = > {
    console.info("Check the key of startup failed, err: " + err)
})

delete

delete(key: string, callback: AsyncCallback): void

從存儲對象中刪除名為給定key的存儲鍵值對,該方法使用callback方式作為異步方法。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名類型必填說明
keystring要刪除的存儲key名稱,不能為空。
callbackAsyncCallback回調函數。

示例:

preferences.delete('startup', function (err) {
    if (err) {
        console.info("Delete startup key failed, err: " + err)
        return
    }
    console.info("Deleted startup key successfully.")
})

delete

delete(key: string): Promise

從存儲對象刪除名為給定key的存儲鍵值對,該方法使用Promise方式作為異步方法。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名類型必填說明
keystring要刪除的存儲key名稱,不能為空。

返回值:

類型說明
PromisePromise實例,用于異步處理。

示例:

let promise = preferences.delete('startup')
promise.then(() = > {
    console.info("Deleted startup key successfully.")
}).catch((err) = > {
    console.info("Delete startup key failed, err: " + err)
})

flush

flush(callback: AsyncCallback): void

將當前preferences對象中的修改保存到當前的preferences,并異步存儲到首選項持久化文件中,該方法使用callback方式作為異步方法。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名類型必填說明
callbackAsyncCallback回調函數。

示例:

preferences.flush(function (err) {
    if (err) {
        console.info("Flush to file failed, err: " + err)
        return
    }
    console.info("Flushed to file successfully.")
})

flush

flush(): Promise

將當前preferences對象中的修改保存到當前的preferences,并異步存儲到首選項持久化文件中,該方法使用Promise方式作為異步方法。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

返回值:

類型說明
PromisePromise實例,用于異步處理。

示例:

let promise = preferences.flush()
promise.then(() = > {
    console.info("Flushed to file successfully.")
}).catch((err) = > {
    console.info("Flush to file failed, err: " + err)
})

clear

clear(callback: AsyncCallback): void

清除此存儲對象中的所有存儲,該方法使用callback方式作為異步方法。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名類型必填說明
callbackAsyncCallback回調函數。

示例:

preferences.clear(function (err) {
    if (err) {
        console.info("Clear to file failed, err: " + err)
        return
    }
    console.info("Cleared to file successfully.")
})

clear

clear(): Promise

清除此存儲對象中的所有存儲,該方法使用Promise方式作為異步方法。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

返回值:

類型說明
PromisePromise實例,用于異步處理。

示例:

let promise = preferences.clear()
promise.then(() = > {
    console.info("Cleared to file successfully.")
}).catch((err) = > {
    console.info("Clear to file failed, err: " + err)
})

on('change')

on(type: 'change', callback: Callback<{ key : string }>): void

訂閱數據變更者類,訂閱的key的值發生變更后,在執行flush方法后,callback方法會被回調。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名類型必填說明
typestring事件類型,固定值'change',表示數據變更。
callbackCallback<{ key : string }>回調對象實例。

示例:

data_preferences.getPreferences(this.context, 'mystore', function (err, preferences) {
    if (err) {
        console.info("Get preferences failed.")
        return;
    }
    var observer = function (key) {
        console.info("The key of " + key + " changed.")
    }
    preferences.on('change', observer)
    preferences.put('startup', 'auto', function (err) {
        if (err) {
            console.info("Put the value of startup failed, err: " + err)
            return
        }
        console.info("Put the value of startup successfully.")

        preferences.flush(function (err) {
            if (err) {
                console.info("Flush to file failed, err: " + err)
                return
            }
            console.info("Flushed to file successfully.") // observer will be called.
        })
    })
})

off('change')

off(type: 'change', callback?: Callback<{ key : string }>): void

當不再進行訂閱數據變更時,使用此接口取消訂閱。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

參數:

參數名類型必填說明HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
typestring事件類型,固定值'change',表示數據變更。
callbackCallback<{ key : string }>需要取消的回調對象實例,不填則全部取消。

示例:

data_preferences.getPreferences(this.context, 'mystore', function (err, preferences) {
    if (err) {
        console.info("Get preferences failed.")
        return;
    }
    var observer = function (key) {
        console.info("The key of " + key + " changed.")
    }
    preferences.on('change', observer)
    preferences.put('startup', 'auto', function (err) {
        if (err) {
            console.info("Put the value of startup failed, err: " + err)
            return
        }
        console.info("Put the value of startup successfully.")

        preferences.flush(function (err) {
            if (err) {
                console.info("Flush to file failed, err: " + err)
                return
            }
            console.info("Flushed to file successfully.") // observer will be called.
        })
        preferences.off('change', observer)
    })
})

ValueType

用于表示允許的數據字段類型。

系統能力: SystemCapability.DistributedDataManager.Preferences.Core

名稱說明
number表示值類型為數字。
string表示值類型為字符串。
boolean表示值類型為布爾值。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8968

    瀏覽量

    153353
  • 數據管理
    +關注

    關注

    1

    文章

    312

    瀏覽量

    19965
  • 鴻蒙
    +關注

    關注

    59

    文章

    2543

    瀏覽量

    43840
收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    鴻蒙OS開發實例:【工具類封裝-首選項本地存儲】

    **import dataPreferences from '@ohos.data.preferences'; import bundleManager from '@ohos.bundle.bundleManager';**
    的頭像 發表于 03-28 15:45 ?2259次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開發</b>實例:【工具類封裝-<b class='flag-5'>首選項</b>本地存儲】

    HarmonyOS開發案例:【用戶首選項

    用戶首選項為應用提供Key-Value鍵值型的數據處理能力,支持應用持久化輕量級數據,常用于保存應用配置信息、用戶偏好設置等。本篇Codelab將基于用戶首選項實現一個簡單的
    的頭像 發表于 04-18 15:34 ?1335次閱讀
    HarmonyOS<b class='flag-5'>開發</b>案例:【用戶<b class='flag-5'>首選項</b>】

    HarmonyOS開發案例:【首選項

    基于HarmonyOS的首選項能力實現的一個簡單示例。
    的頭像 發表于 04-19 16:20 ?1683次閱讀
    HarmonyOS<b class='flag-5'>開發</b>案例:【<b class='flag-5'>首選項</b>】

    鴻蒙實戰項目開發:【短信服務】

    數據管理 電話服務 分布式應用開發 通知與窗口管理 多媒體技術 安全技能 任務管理 WebGL 國際化開發 應用測試 DFX面向未來設計
    發表于 03-03 21:29

    基于鴻蒙Next模擬卡片數據數據更新

    \'@ohos.data.preferences\'; import common from \'@ohos.app.ability.common\'; import abilityAccessCtrl
    發表于 08-30 15:32

    鴻蒙Flutter實戰:06-使用ArkTs開發Flutter鴻蒙插件

    ,setPrefs沒有返回值。 以下為 ForestApi的具體實現,使用了 HarmonyOS 中的首選項 API 設置和讀取數據。 class ForestApi { getPrefs(key
    發表于 10-22 21:56

    如何設置Xilinx ISE首選項11.x 12.x的默認值

    可能是一個新手問題,我們有一個配置允許不同版本的附加工具,如modelsim,synplicity。我們想知道是否有辦法告訴Xilinx默認使用什么。具體來說,我們有興趣設置以下值: 首選項
    發表于 11-15 11:29

    查看首選項未保存, 如何保存設置?

    您好,我想把論壇中的帖子看成“平面閱讀模式”而不是“線程閱讀模式”。所以我轉到用戶控制面板,編輯配置文件,特性首選項,查看首選項,并將其設置為“平面”,然后單擊“保存配置文件”。如果我移動到其他
    發表于 09-11 12:08

    數據管理功能詳解

    在應用程序菜單上,單擊設置→選項管理,勾選使用浩辰3D軟件的數據管理。在管理頁面上,可以通過選項卡來快速搜索保管庫定義、定制屬性、文件命名
    發表于 11-03 15:32

    ESP8266/ARDUINO構建H找不到首選項怎么解決?

    大家好!我對運行 Arduino 核心的 ESP32 有一些扎實的經驗,并且一直在使用首選項庫來存儲,你猜對了,首選項,到該平臺上的 NVS。這是一個簡單而順利的過程。我正在嘗試將我的代碼移植到運行
    發表于 02-21 07:44

    HarmonyOS數據管理與應用數據持久化(一)

    開發步驟 導入用戶首選項模塊。 import dataPreferences from \'@ohos.data.preferences\'; 要通過用戶首選項實現
    發表于 11-01 16:27

    鴻蒙開發接口數據管理:【@ohos.data.distributedData (分布式數據管理)】

    分布式數據管理為應用程序提供不同設備間數據庫的分布式協同能力。通過調用分布式數據各個接口,應用程序可將數據保存到分布式
    的頭像 發表于 06-07 09:30 ?1490次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b><b class='flag-5'>接口</b><b class='flag-5'>數據管理</b>:【@<b class='flag-5'>ohos.data</b>.distributedData (分布式<b class='flag-5'>數據管理</b>)】

    鴻蒙開發接口數據管理:【@ohos.data.distributedDataObject (分布式數據對象)】

    本模塊提供管理基本數據對象的相關能力,包括創建、查詢、刪除、修改、訂閱等;同時支持相同應用多設備間的分布式數據對象協同能力。
    的頭像 發表于 06-07 17:51 ?1766次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b><b class='flag-5'>接口</b><b class='flag-5'>數據管理</b>:【@<b class='flag-5'>ohos.data</b>.distributedDataObject (分布式<b class='flag-5'>數據</b>對象)】

    鴻蒙開發接口數據管理:【@ohos.data.rdb (關系型數據庫)】

    關系型數據庫(Relational Database,RDB)是一種基于關系模型來管理數據數據庫。關系型數據庫基于SQLite組件提供了一
    的頭像 發表于 06-10 18:35 ?1890次閱讀

    harmony OS NEXT-通過用戶首選項實現數據持久化

    存儲的地方,可以采用用戶首選項來進行存儲。Preferences會將該數據緩存在內存中,當用戶讀取的時候,能夠快速從內存中獲取數據,當需要持久化時可以使用flush
    的頭像 發表于 04-29 16:38 ?423次閱讀
    主站蜘蛛池模板: 好色女博士 | 91桃色污无限免费看 | 国产色精品久久人妻无码看片 | 久章草一区二区 | 99无码熟妇丰满人妻啪啪 | 99久久久免费精品免费 | 天美传媒麻豆精品 | 国内精品伊人久久久影院 | 胸大美女又黄的网站 | 狠狠色狠狠色综合日日2019 | 女子叉开腿让男子桶免费软件 | 樱花动漫成人隐藏入口 | 国产午夜精品一区理论片飘花 | 超碰99热在线精品视频 | 亚洲成人在线免费观看 | 国产黄a三级三级三级 | 日韩精品 电影一区 亚洲高清 | 嗯呐啊唔高H兽交 | 免费在线视频成人 | 偷偷鲁青春草原视频 | 免费观看男生桶美女私人部位 | 免费伦理片网站 | 午夜国产大片免费观看 | 中国拍三a级的明星女 | 黄色免费在线网址 | 抽插性奴中出乳精内射 | 91原创在线| 国产精品亚洲在钱视频 | 亚洲AV无码久久流水呻蜜桃久色 | 人妖欧美一区二区三区四区 | 青柠在线观看免费播放电影 | 国产午夜精品久久久久婷婷 | 欧美 亚洲 日韩 在线综合 | 春药按摩人妻中文字幕 | 久久人妻少妇嫩草AV蜜桃99 | 亚洲精品AV无码永久无码 | 欧美日韩中文国产一区发布 | 色老头色老太aaabbb | 国产亚洲精品久久7777777 | 郭德纲于谦2012最新相声 | 寻找最美乡村教师颁奖晚会 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品