数据类型详解
以下是一些示例:
// 基本类型
boolean bool = true;
int number = 2018;
String string = number + " 流行音乐榜单";
Date date = new Date();
byte[] data = "Hello world!".getBytes();
ArrayList<Object> arrayList = new ArrayList<>();
arrayList.add(number);
arrayList.add(string);
HashMap<Object, Object> hashMap = new HashMap<>();
hashMap.put("number", number);
hashMap.put("string", string);
// 构建对象
LCObject testObject = new LCObject("TestObject");
testObject.put("testBoolean", bool);
testObject.put("testInteger", number);
testObject.put("testDate", date);
testObject.put("testData", data);
testObject.put("testArrayList", arrayList);
testObject.put("testHashMap", hashMap);
testObject.save();
我们不推荐通过 byte[] 在 LCObject 里面存储图片、文档等大型二进制数据。每个 LCObject 的大小不应超过 128 KB。如需存储大型文件,可创建 LCFile 实例并将将其关联到 LCObject 的某个属性上。
以下是一些对象的内置属性,会在对象保存时自动创建,无需手动指定:
内置属性 | 类型 | 描述 |
---|---|---|
objectId | String | 该对象唯一的 ID 标识。 |
ACL | LCACL | 该对象的权限控制,实际上是一个 JSON 对象,控制台做了展现优化。 |
createdAt | Date | 该对象被创建的时间。 |
updatedAt | Date | 该对象最后一次被修改的时间。 |
这些属性的值会在对象被存入云端时自动填入,代码中尚未保存的 LCObject 不存在这些属性。
获取对象
对于已经保存到云端的 LCObject,可以通过它的 objectId 将其取回:
LCQuery<LCObject> query = new LCQuery<>("Todo");
query.getInBackground("582570f38ac247004f39c24b").subscribe(new Observer<LCObject>() {
public void onSubscribe(Disposable disposable) {}
public void onNext(LCObject todo) {
// todo 就是 objectId 为 582570f38ac247004f39c24b 的 Todo 实例
String title = todo.getString("title");
int priority = todo.getInt("priority");
// 获取内置属性
String objectId = todo.getObjectId();
Date updatedAt = todo.getUpdatedAt();
Date createdAt = todo.getCreatedAt();
}
public void onError(Throwable throwable) {}
public void onComplete() {}
});
对象拿到之后,可以通过 get 方法来获取各个属性的值。注意 objectId、updatedAt和createdAt 这三个内置属性不能通过 get 获取或通过 set 修改,只能由云端自动进行填充。尚未保存的 LCObject 不存在这些属性。
如果你试图获取一个不存在的属性,SDK 不会报错,而是会返回 null。