数据存储开发指南 · Unreal
数据存储是云服务提供的核心功能之一,可用于存放和查询应用数据。下面的代码展示了如何创建一个对象并将其存入云端:
// 构建对象
TSharedPtr<FLCObject> ToDo = MakeShared<FLCObject>("Todo");
// 为属性赋值
ToDo->Set("title", TEXT("工程师周会"));
ToDo->Set("content", TEXT("工程师周会"));
// 将对象保存到云端
ToDo->Save(FLeanCloudBoolResultDelegate::CreateLambda([=](bool bIsSuccess, const FLCError& Error) {
if (bIsSuccess) {
// 成功保存之后,执行其他逻辑
UE_LOG(LogTemp, Error, TEXT("%s"), *ToDo->GetObjectId());
} else {
// 异常处理
}
}));
我们为各个平台或者语言开发的 SDK 在底层都是通过 HTTPS 协议调用统一的 REST API,提供完整的接口对数据进行各类操作。
SDK 安装与初始化
对象
FLCObject
FLCObject 是云服务对复杂对象的封装,每个 FLCObject 包含若干与 JSON 格式兼容的属性值对(也称键值对,key-value pairs)。这个数据是无模式化的(schema free),意味着你 不需要提前标注每个 FLCObject 上有哪些 key,你只需要随意设置键值对就可以,云端会保存它。
比如说,一个保存着单个 Todo 的 FLCObject 可能包含如下数据:
title: "给小林发邮件确认会议时间",
isComplete: false,
priority: 2,
tags: ["工作", "销售"]
数据类型
FLCObject 支持的数据类型包括 FString、int、Double、Boolean、Object、Array、Date 等等。你可以通过嵌套的方式在 Object 或 Array 里面存储更加结构化的数据。
FLCObject 还支持两种特殊的数据类型 Pointer 和 File,可以分别用来存储指向其他 FLCObject 的指针以及二进制数据。
FLCObject 同时支持 GeoPoint,可以用来存储地理位置信息。参见 GeoPoint。
以下是一些示例:
// 基本类型
FString String = TEXT("工程师周会");
int Interger = 10;
double Double = 20.0;
bool Boolean = true;
FDateTime Time = FDateTime::Now();
TArray<uint8> Data = {8, 16};
TLCMap Map;
Map.Add("Key", "Value");
TLCArray Array = {1, "HAHA", true};
TSharedPtr<FLCObject> Object = MakeShared<FLCObject>("Todo");
// 构建对象
TSharedPtr<FLCObject> TestObject = MakeShared<FLCObject>("TestObject");
TestObject->Set("testString", String);
TestObject->Set("testInt", Interger);
TestObject->Set("testDouble", Double);
TestObject->Set("testBoolean", Boolean);
TestObject->Set("testTime", Time);
TestObject->Set("testMap", Map);
TestObject->Set("testArray", Array);
TestObject->Set("testObject", Object);
TestObject->Save();
我们不推荐通过 NSData 在 FLCObject 里面存储图片、文档等大型二进制数据。每个 FLCObject 的大小不应超过 128 KB。如需存储大型文件,可创建 FLCFile(暂不支持) 实例并将其关联到 FLCObject 的某个属性上。参见 文件。
注意:时间类型在云端将会以 UTC 时间格式存储,但是客户端在读取之后会转化成本地时间。
开发者中心 > 你的游戏 > 游戏服务 > 云服务 > 数据存储 > 结构化数据 中展示的日期数据也会依据操作系统的时区进行转换。一个例外是当你通过 REST API 获得数据时,这些数据将以 UTC 呈现。你可以手动对它们进行转换。
若想了解云服务是如何保护应用数据的,请阅读数据和安全。
构建对象
下面的代码构建了一个 class 为 Todo 的 FLCObject:
TSharedPtr<FLCObject> Object = MakeShared<FLCObject>("Todo");