繁体   English   中英

(Parse-SDK) 如何访问列表<ParseObject>来自另一个 ParseObject?

[英](Parse-SDK) How to access List<ParseObject> from another ParseObject?

我正在将 ParseSDK 用于 android 项目。 但是我在从另一个 ParseObject 类访问 ParseObjects 列表时遇到问题。 我尝试了很多东西,但没有任何帮助。 下面我把我的代码。

Team team;

List<User> members = team.getMembers();
for(User user : members) {
  user.getName();
}

@ParseClassName("Team")
public class Team extends ParseObject {

    public static class Constant {
        private static final String CREATED_BY = "createdBy";
        private static final String NAME = "name";
        public static final String CODE = "code";
        private static final String PARTICIPANTS = "participants";
        public static final String IS_ACTIVE = "isActive";
    }

    private String name;
    private String code;
    private User createdBy;
    private List<User> members;
    private int isActive;

    public String getName() {
        return getString(Constant.NAME);
    }

    public void setName(String name) {
        this.name = name;
        put(Constant.NAME, name);
    }

    public String getCode() {
        return getString(Constant.CODE);
    }

    public void setCode(String code) {
        this.code = code;
        put(Constant.CODE, code);
    }

    public User getCreatedBy() {
        return (User) getParseUser(Constant.CREATED_BY);
    }

    public void setCreatedBy(User createdBy) {
        this.createdBy = createdBy;
        put(Constant.CREATED_BY, createdBy);
    }

    public List<User> getMembers() {
        return getList(Constant.PARTICIPANTS);
    }

    public void setMembers(List<User> members) {
        this.members = members;
        put(Constant.PARTICIPANTS, members);
    }

    public int getIsActive() {
        return getInt(Constant.IS_ACTIVE);
    }

    public void setIsActive(int isActive) {
        this.isActive = isActive;
        put(Constant.IS_ACTIVE, isActive);
    }

@ParseClassName("_User")
public class User extends ParseUser {

    private static class Constant {
        private static final String NAME = "name";
        private static final String GENDER = "gender";
        private static final String BIRTHDATE = "birthdate";
        private static final String FACEBOOK_ID = "facebookId";
        private static final String AVATAR = "avatar";
        private static final String WEIGHT = "weight";
        private static final String WEIGHT_UNIT = "weightUnit";
        private static final String EXPERIENCE_LEVEL = "experienceLevel";
        private static final String GOALS = "goals";
        private static final String SCORE = "score";
        private static final String IS_PREMIUM = "isPremium";
        private static final String IS_TRIAL_PERIOD = "isTrialPeriod";
        private static final String TOTAL_WORKOUT_BUILDS = "totalWorkoutBuilds";
    }

    private String name;
    private String gender;
    private String facebookId;
    private Date birthday;
    private ParseFile avatar;
    private int weight;
    private String weighUnit;
    private String experienceLevel;
    private List<Goal> goals;
    private int score;
    private int isPremium;
    private int isTrialPeriod;
    private int totalWorkoutBuilds;
    private String emailAddress;

    public User() {
        super();
    }

    public String getName() {
        return validateStringResult(Constant.NAME);
    }

    public void setName(String name) {
        put(Constant.NAME, name);
    }

    public String getGender() {
        return validateStringResult(Constant.GENDER);
    }

    public void setGender(String gender) {
        put(Constant.GENDER, gender);
    }

    public Date getBirthday() {
        return getDate(Constant.BIRTHDATE);
    }

    public void setBirthday(Date birthday) {
        put(Constant.BIRTHDATE, birthday);
    }

    public String getFacebookId() {
        return validateStringResult(Constant.FACEBOOK_ID);
    }

    public void setFacebookId(String facebookId) {
        put(Constant.FACEBOOK_ID, facebookId);
    }

    public ParseFile getAvatar() {
        return getParseFile(Constant.AVATAR);
    }

    public void setAvatar(ParseFile avatar) {
        put(Constant.AVATAR, avatar);
    }

    public int getWeight() {
        return getInt(Constant.WEIGHT);
    }

    public void setWeight(int weight) {
        put(Constant.WEIGHT, weight);
    }

    public String getWeightUnit() {
        return validateStringResult(Constant.WEIGHT_UNIT);
    }

    public void setWeightUnit(String weightUnit) {
        put(Constant.WEIGHT_UNIT, weightUnit);
    }

    public ExperienceLevel getExperienceLevel() {
        final String result = validateStringResult(Constant.EXPERIENCE_LEVEL);
        if (result.equalsIgnoreCase("intermediate")) {
            return ExperienceLevel.INTERMEDIATE;
        } else if (result.equalsIgnoreCase("advanced")) {
            return ExperienceLevel.ADVANCED;
        } else {
            return ExperienceLevel.BEGINNER;
        }
    }

    public void setExperienceLevel(String experienceLevel) {
        put(Constant.EXPERIENCE_LEVEL, experienceLevel);
    }

    public List<Goal> getGoals() {
        return getList(Constant.GOALS);
    }

    public void setGoals(List<Goal> goals) {
        put(Constant.GOALS, goals);
    }

    public int getScore() {
        return getInt(Constant.SCORE);
    }

    public void setScore(int score) {
        put(Constant.SCORE, score);
    }

    public boolean isPremium() {
        return getBoolean(Constant.IS_PREMIUM);
    }

    public void setPremium(boolean premium) {
        put(Constant.IS_PREMIUM, premium);
    }

    public boolean isTrialPeriod() {
        return getBoolean(Constant.IS_TRIAL_PERIOD);
    }

    public void setTrialPeriod(boolean trialPeriod) {
        put(Constant.IS_TRIAL_PERIOD, trialPeriod);
    }

    public int getTotalWorkoutBuilds() {
        return getInt(Constant.TOTAL_WORKOUT_BUILDS);
    }

    public void setTotalWorkoutBuilds(int totalWorkoutBuilds) {
        put(Constant.TOTAL_WORKOUT_BUILDS, totalWorkoutBuilds);
    }

    private String validateStringResult(String key) {
        final String result = getString(key);
        return result == null ? "" : result;
    }

E/AndroidRuntime:致命异常:主进程:com.kineticoach.traveltrainer,PID:22022 java.lang.IllegalStateException:ParseObject 没有“名称”的数据。 调用 fetchIfNeeded() 来获取数据。 在 com.parse.ParseObject.checkGetAccess(ParseObject.java:3607) 在 com.parse.ParseObject.getString(ParseObject.java:3186) 在 com.kineticoach.traveltrainer.models.objects.User.getName(User.java:25) ) 在 com.kineticoach.traveltrainer.fragments.ProfileFragment.lambda$loadUserData$1$ProfileFragment(ProfileFragment.java:153) 在 com.kineticoach.traveltrainer.fragments.-$$Lambda$ProfileFragment$Sdpefi97hyh_jTMOE2pWx3(Unknown Source:153)在 android.os.Handler.handleCallback(Handler.java:874) 在 android.os.Handler.dispatchMessage(Handler.java:100) 在 android.os.Looper.loop(Looper.java:198) 在 android.app。 ActivityThread.main(ActivityThread.java:6729) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android。 internal.os.ZygoteInit.main(ZygoteInit.java:858)

按照这个参考

我们不会将嵌套的 ParseObject 的完整数据发送到云代码。 为了获取嵌套 ParseObject 的数据,您必须进行查询或获取。 您从云代码获得的结果与您从 ParseQuery 获得的结果非常相似。 我们将嵌套的 ParseObject 表示为指针,您必须获取或查询它才能使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM