我在一个类中有一个用户数组,在“likers”列下 我想在最短的时间内检查当前用户是否包含在likers数组中 这是我目前的(功能失调的)代码:
ArrayList<ParseUser> likers = (ArrayList<ParseUser>) rating.get("likers");
Boolean contained = likers.contains(ParseUser.getCurrentUser()) //always returns false
如何更改它以使其有效?我觉得这是ObjectId
的匹配。也许Parse SDK中有一个函数?
谢谢!
答案 0 :(得分:2)
您可以使用下一种方法。
ParseObject rating = ParseObject.create(ParseObject.class);
ArrayList<ParseUser> likers = (ArrayList<ParseUser>) rating.get("likers");
Boolean contained = containsUser(likers, ParseUser.getCurrentUser());
方法
private boolean containsUser(List<ParseUser> list, ParseUser user) {
for (ParseUser parseUser : list) {
if (parseUser.hasSameId(user)) return true;
}
return false;
}
关于你的代码。它工作正确,返回false。因为ArrayList实现了List接口。如果在contains方法中查看Javadoc for List,您将看到它使用equals()方法来评估两个对象是否相同。 rating.get(“likers”)的结果包含与ParseUser.getCurrentUser相同的ParseUsers,但它们在内存中是不同的对象。所以你需要通过比较Parse.com的ObjectId找到它。