如何在解析中清除/将值设置为 null/undefined

How to clear/ set a value to null/undefined in parse

我的 Parse class 中有 3 列,FOOD1、FOOD2 和 FOOD3。 如果用户选择他们喜欢的 0、1、2 或 3 种食物,它是可选的,我将食物保存在这些列中。将重复此过程。

对于每个循环,我想在 null/undefined 上设置所有这些字段,这样我就可以简单地查看他们在选择后是否选择了某些内容。 但是当其中一个字段例如。 FOOD1填入数据库,我无法清除它的值

我试过了:

 final ParseQuery queryusername = ParseQuery.getQuery("Usernames");
                queryusername.whereContains("names",db.getUsername());
                try {
                    ParseObject p = queryusername.getFirst();

                    System.out.println("parseobject:"+p);
                    //make fields empty
                    p.put("Food1",null); //Error
                    p.put("Food2",null);
                    p.put("Food3",null);
}catch(){}

错误是:

 java.lang.IllegalArgumentException: value may not be null.

如何清除字段?

Parse object 提供 remove()。将要删除的密钥传递给它,例如

p.remove("Food1");
p.remove("Food2");
p.remove("Food3");

Parse SDK 似乎检查了 null。 来自 source

/** * Add a key-value pair to this object. It is recommended to name keys in * <code>camelCaseLikeThis</code>. * * @param key * Keys must be alphanumerical plus underscore, and start with a letter. * @param value * Values may be numerical, {@link String}, {@link JSONObject}, {@link JSONArray}, * {@link JSONObject#NULL}, or other {@code ParseObject}s. value may not be {@code null}. */

为什么要设置为NULL?你总是可以使用空 String 或一些常量 integer 或最后 JSONObject.NULL。 或者像@danh

的回答一样使用 p.remove

https://whosebug.com/users/294949/danh 的答案有效。您必须保存对象:

    p.remove("Food1");
    p.remove("Food2");
    p.remove("Food3");
    try {
            p.save();
    } 
    catch (ParseException e) {
    }