Как очистить / установить значение 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