Maui Blazor 中文社区 QQ群:645660665

Maui 基础 - Preferences 存储和检索应用程序的首选项

Maui 基础

Preferences 是 .NET MAUI 提供的一个静态类,用于存储和检索应用程序的首选项(即设置或配置)。它提供了一种简单的键值对存储机制,可以跨平台使用。每个平台使用其本地的存储机制来实现这些功能,例如:

  • iOS 使用 NSUserDefaults
  • Android 使用 SharedPreferences
  • Windows 使用 ApplicationDataContainer

主要功能

  1. 存储值:
  • Set 方法用于存储值。支持多种数据类型,如 string、int、bool、double、float、long 和 DateTime。
   Preferences.Set("key", "value");
   Preferences.Set("key", 123);
   Preferences.Set("key", true);
  1. 检索值:
  • Get 方法用于检索存储的值。如果键不存在,则返回默认值。
   string value = Preferences.Get("key", "default_value");
   int number = Preferences.Get("key", 0);
   bool flag = Preferences.Get("key", false);
  1. 检查键是否存在:
  • ContainsKey 方法用于检查指定的键是否存在。
   bool exists = Preferences.ContainsKey("key");
  1. 移除键:
  • Remove 方法用于移除指定的键及其关联的值。
   Preferences.Remove("key");
  1. 清除所有键值对:
  • Clear 方法用于清除所有存储的键值对。
   Preferences.Clear();

示例

以下是一个简单的示例,展示了如何使用 Preferences 类来存储和检索应用程序的首选项:

// 存储值
Preferences.Set("username", "Alex");
Preferences.Set("isLoggedIn", true);
Preferences.Set("loginCount", 5);

// 检索值
string username = Preferences.Get("username", "default_user");
bool isLoggedIn = Preferences.Get("isLoggedIn", false);
int loginCount = Preferences.Get("loginCount", 0);

// 检查键是否存在
bool hasUsername = Preferences.ContainsKey("username");

// 移除键
Preferences.Remove("username");

// 清除所有键值对
Preferences.Clear();

Preferences 类提供了一种简单而有效的方式来管理应用程序的设置和配置,适用于跨平台的 .NET MAUI 应用程序

如何在 Preferences 中存储自定义对象?

在 Preferences 中存储自定义对象时,由于 Preferences 仅支持基本数据类型(如 string、int、bool 等),你需要将自定义对象序列化为 string 类型,然后再存储。常用的序列化方法是使用 JSON。
以下是一个示例,展示了如何在 Preferences 中存储和检索自定义对象:

以下是每个方法的工作原理:

  1. 定义自定义对象
public class User
{
    public string Name { get; set; }
    public int Age { get; set; }
}
  1. 使用 JSON 序列化和反序列化

你可以使用 System.Text.Json 或 Newtonsoft.Json 库来进行 JSON 序列化和反序列化。以下示例使用 System.Text.Json:

using System.Text.Json;

public void SaveUser(User user)
{
    string jsonString = JsonSerializer.Serialize(user);
    Preferences.Set("user", jsonString);
}
  1. 检索自定义对象
public User? GetUser()
{
    string jsonString = Preferences.Get("user", string.Empty);
    if (string.IsNullOrEmpty(jsonString))
    {
        return null;
    }
    return JsonSerializer.Deserialize<User>(jsonString);
}
  1. 完整示例
    将上述方法添加到你的类中,例如 NativeApi 类:
using System.Text.Json;

internal partial class NativeApi : object
{
    // 现有方法...

    public void SaveUser(User user)
    {
        string jsonString = JsonSerializer.Serialize(user);
        Preferences.Set("user", jsonString);
    }

    public User? GetUser()
    {
        string jsonString = Preferences.Get("user", string.Empty);
        if (string.IsNullOrEmpty(jsonString))
        {
            return null;
        }
        return JsonSerializer.Deserialize<User>(jsonString);
    }
}

public class User
{
    public string Name { get; set; }
    public int Age { get; set; }
}
说明
  1. SaveUser 方法:将 User 对象序列化为 JSON 字符串,并使用 Preferences.Set 方法存储。
  2. GetUser 方法:从 Preferences 中检索 JSON 字符串,并将其反序列化为 User 对象。如果字符串为空,则返回 null。
    通过这种方式,你可以在 Preferences 中存储和检索自定义对象
posted @ 2025-02-11 18:50  AlexChow  阅读(2702)  评论(0)    收藏  举报