UWP存储使用与封装

在开发UWP(Universal Windows Platform)应用时,数据存储是一个常见的需求。本文将介绍如何在UWP应用中使用和封装存储功能。将探讨如何在C++/CX和C#中直接使用UWP存储API,以及如何通过封装简化代码。

C++/CX中的存储使用

在C++/CX中,可以直接使用UWP的存储API来存储和读取数据。以下是一个示例,展示了如何存储和读取一个整数类型的数据。

Windows::Storage::ApplicationDataContainer^ localSettings = Windows::Storage::ApplicationData::Current->LocalSettings; localSettings->Values->Insert("RawKey", 123); bool exists = localSettings->Values->HasKey("RawKey"); if (exists) { Platform::Object^ obj = localSettings->Values->Lookup("RawKey"); int result = safe_cast(obj); } localSettings->Values->Clear();

在这个示例中,首先获取了应用的本地设置容器,然后插入了一个键值对,检查键是否存在,如果存在则读取其值,并最终清除所有值。

虽然C#的使用已经相对简单,但封装可以进一步简化代码。以下是一个使用封装的示例,它展示了如何存储和读取一个整数。

UWPStorage^ storage = ref new UWPStorage(StorageType::Local); storage->SetInt32("WrapperKey", 456); bool exists = false; int result = storage->GetInt32("WrapperKey", &exists, 444); storage->Clear();

在这个封装示例中,创建了一个UWPStorage对象,并使用它来存储和读取数据。封装后的代码更加简洁,减少了重复的代码量。

C#中的存储使用

在C#中,同样可以直接使用UWP的存储API来存储和读取数据。以下是一个示例,展示了如何存储和读取一个整数类型的数据。

Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; localSettings.Values["RawKey"] = 123; int result = (int)(localSettings.Values["RawKey"]); localSettings.Values.Clear();

在这个示例中,首先获取了应用的本地设置容器,然后插入了一个键值对,并读取其值,最后清除所有值。

C#中,封装同样可以简化代码。以下是一个使用封装的示例,它展示了如何存储和读取一个整数。

UWPStorage storage = new UWPStorage(StorageType.Local); storage.SetInt32("WrapperKey", 456); bool exists = false; int result = storage.GetInt32("WrapperKey", out exists, 444); storage.Clear();

在这个封装示例中,创建了一个UWPStorage对象,并使用它来存储和读取数据。封装后的代码更加简洁,减少了重复的代码量。

存储复合数据

除了存储基本数据类型,UWP还支持存储复合数据。以下是一个C++/CX的示例,展示了如何存储和读取包含整数和字符串的复合数据。

Windows::Storage::ApplicationDataContainer^ localSettings = Windows::Storage::ApplicationData::Current->LocalSettings; // 创建复合设置 ApplicationDataCompositeValue^ composite = ref new ApplicationDataCompositeValue(); composite->Insert("intVal", dynamic_cast(PropertyValue::CreateInt32(1212))); composite->Insert("strVal", dynamic_cast(PropertyValue::CreateString("string"))); auto values = localSettings->Values; values->Insert("RawCompositeSetting", composite); // 读取复合设置中的数据 ApplicationDataCompositeValue^ composite2 = safe_cast(localSettings->Values->Lookup("RawCompositeSetting")); if (composite2) { int one = safe_cast(composite2->Lookup("intVal"))->GetInt32(); String^ hello = safe_cast(composite2->Lookup("strVal")); } // 删除复合设置 values->Remove("RawCompositeSetting");

在这个示例中,首先创建了一个复合设置,然后插入了两个键值对,一个是整数,另一个是字符串。接着读取这些值,并最终删除复合设置。

以下是一个使用封装的C++/CX示例,它展示了如何存储和读取包含整数和字符串的复合数据。

UWPStorage^ storage = ref new UWPStorage(StorageType::Local); // 创建复合设置 CompositeValue^ composite = ref new CompositeValue(); composite->SetInt32("intVal", 3434); composite->SetString("strVal", "string"); storage->SetComposite("WrapperCompositeSetting", composite); // 读取复合设置中的数据 bool exists = false; CompositeValue^ composite2 = storage->GetComposite("WrapperCompositeSetting", &exists); if (exists) { int one = composite2->GetInt32("intVal", &exists, 4444); String^ hello = composite2->GetString("strVal", &exists, "error"); } // 删除复合设置 storage->Remove("WrapperCompositeSetting");

在这个封装示例中,创建了一个UWPStorage对象,并使用它来存储和读取复合数据。封装后的代码更加简洁,减少了重复的代码量。

跨平台存储类

通过封装,可以编写一个可移植的C++存储类,它不仅在UWP上工作,还可以在其他操作系统如Linux和MacOSX上工作,从而减少了将UWP应用移植到其他平台的工作量。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485