2014-12-05 2 views
0

클래스의 사용자 목록이 "likers"열 아래에 있습니다 현재 사용자가 해당 사용자에 포함되어 있는지 확인하고 싶습니다. 배열, 최소한의 시간 이 내 전류 (장애) 코드 :Parse.com - 안드로이드 : 사용자가 배열에 속한 경우 부울 켜기

 ArrayList<ParseUser> likers = (ArrayList<ParseUser>) rating.get("likers"); 
     Boolean contained = likers.contains(ParseUser.getCurrentUser()) //always returns false 

는 어떻게 변경할 수는 그것이 작동되도록하려면? ObjectId에 일치하는 것 같습니다. 어쩌면 Parse SDK에 함수가 있습니까?

감사합니다.

답변

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 메소드에서 List 용 Javadoc을 보면 equals() 메소드를 사용하여 두 객체가 같은지 평가할 수 있습니다. rating.get ("likers")의 결과에는 ParseUser.getCurrentUser와 동일한 ParseUsers가 포함되어 있지만 메모리의 다른 객체입니다. 따라서 Parse.com의 ObjectId를 비교하여 찾아야합니다.

관련 문제