我在db中有一个表,我们可以称之为" A"只有2列:
user (Pointer _User)
b (Pointer "B") (where "B" is another table in my db)
代码是:
a.put("b", b);
a.put("user", ParseUser.getCurrentUser());
a.save(); //I manage my threading
在a.save()上抛出了标题中的IllegalArgumentException,有人可以解释一下为什么?在" B"在那里有一个指向另一个_User的列,我希望这个问题不依赖于这个!!!
这是logcat输出:
答案 0 :(得分:0)
来自官方docs
用户对象的安全性
默认情况下,ParseUser类是安全的。存储在ParseUser
中的数据只能由该用户修改。默认情况下,任何客户端仍可读取数据。因此,一些ParseUser
对象被认证并且可以被修改,而其他对象是只读的。
具体来说,除非ParseUser
是使用经过身份验证的方法获得的,否则您无法调用任何保存或删除类型方法,例如logIn
或signUp
。这可确保只有用户才能更改自己的数据。
以下说明了此安全策略:
ParseUser user = ParseUser.logIn("my_username", "my_password");
user.setUsername("my_new_username"); // attempt to change username
user.saveInBackground(); // This succeeds, since the user was authenticated on the device
// Get the user from a non-authenticated manner
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.getInBackground(user.getObjectId(), new GetCallback<ParseUser>() {
public void done(ParseUser object, ParseException e) {
object.setUsername("another_username");
// This will throw an exception, since the ParseUser is not authenticated
object.saveInBackground();
}
});
从ParseUser
获得的getCurrentUser()
将始终通过身份验证。
如果您需要检查ParseUser
是否已通过身份验证,则可以调用isAuthenticated()
方法。您无需使用通过身份验证方法获取的isAuthenticated()
个对象检查ParseUser
。