gpt4 book ai didi

java - 从 BackendlessUser getProperty() 获取零个对象

转载 作者:太空宇宙 更新时间:2023-11-04 12:29:59 25 4
gpt4 key购买 nike

我已经设置了 Backendless 应用程序,其中 User具有行名称 posts 的表,这是 User 之间的数据对象关系和Post表,数据关系是一对多。当我尝试使用 BackendlessUser.getProperty("key") 检索它时,它返回零个对象。一旦它返回HashMap 。我使用了docs中提到的方式,但由于 Object[] 的大小而获取 null为零。我确信该行中有数据,写道 <uses-permission>用于互联网。

public class MainActivity extends AppCompatActivity {
BackendlessUser user = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Backendless.initApp(this, "app_id", "android_key", "v1");

Backendless.UserService.login("username", "password", new AsyncCallback<BackendlessUser>() {
@Override
public void handleResponse(BackendlessUser response) {
user = response;
doStuff();
}
@Override
public void handleFault(BackendlessFault fault) {
Log.e("Error logging in", "message: " + fault.getMessage());
}
});
}

//important
private void doStuff() {
Object[] postObjectArray = (Object[]) user.getProperty("posts");

Post[] posts = null;

if (postObjectArray != null && postObjectArray.length > 0)
posts = (Post[])postObjectArray;

if (posts == null)
{
Log.d("Problems", "posts is null");
}
}
}

Post类:

public class Post extends Object{

private BackendlessUser user;
private String file;
private String message;
private String objectId;

public String getObjectId() {
return objectId;
}

public void setObjectId(String objectId) {
this.objectId = objectId;
}

public Post() {
}

public Post(BackendlessUser user, String file, String message) {
this.user = user;
this.file = file;
this.message = message;
}

public BackendlessUser getUser() {
return user;
}

public void setUser(BackendlessUser user) {
this.user = user;
}

public String getFile() {
return file;
}

public void setFile(String file) {
this.file = file;
}

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}
}

最佳答案

原因是未选中“自动加载”复选框,该复选框会在加载所属表时加载与该复选框对应的一对多关系的所有值。因此,user.getProperty("posts")总是返回 null。但需要注意的是,如果该行是数据对象关系,则返回 HashMap<String, Object> ,所以 Post 需要有接受 HashMap<String, Object> 的构造函数:

public Post(HashMap hashMap)
{
this.hashMap = hashMap;
property1 = (String)hashMap.get("property1");
/*other properties*/
}

如果没有值,它将返回 Object ,它不能转换为任何其他类型,因此必须应用文档中使用的方式来修复边缘情况。

编辑:

这对于map data table to class很有用在对 Backendless 进行任何调用之前。这样,就可以消除 HashMap 的所有工作。并直接得到想要的类型。尽管如此,如果您通过 Backendless.Persistence 检索数据您可以将其指定为参数。

关于java - 从 BackendlessUser getProperty() 获取零个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37954345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com