Как очистить / установить значение null/undefined при разборе

У меня есть 3 столбца в моем классе Parse, 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.

как я могу очистить поле?

2 ответа

Решение

Разбор объекта обеспечивает удаление (). Передайте ему ключ для удаления, например

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

Ответ danh работает. Вы должны сохранить объект:

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

Кажется, что Parse SDK имеет проверки на ноль. Из источника

/** * 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? Вы всегда можете использовать пустую строку или некоторое постоянное целое число или, наконец, JSONObject.NULL. Или используйте p.remove как в ответе @danh

Другие вопросы по тегам