public Boolean check(String username) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("User");
query.whereEqualTo("username", username);
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
if (e == null && objects.size() > 0) {
return true;
}
}
});
return false;
}
Привет!
Я пытаюсь проверить, существует ли имя пользователя в базе данных.
У меня проблема со строкой 11, где return true
не работает, потому что он внутри «блока» (я не знаю правильного термина ...)
Есть ли способ, чтобы метод 'check' возвращал логическое значение, как это и предполагалось, если FindCallBackбыл успешным?
Я также проверил, может ли findInBackground вообще что-либо вернуть, и прыгнул в его объявление.
public void findInBackground(final FindCallback<T> callback) {
final State<T> state = builder.build();
final Task<List<T>> task;
if (state.cachePolicy() != CachePolicy.CACHE_THEN_NETWORK ||
state.isFromLocalDatastore()) {
task = findAsync(state);
} else {
task = doCacheThenNetwork(state, callback, new CacheThenNetworkCallable<T, Task<List<T>>>() {
@Override
public Task<List<T>> call(State<T> state, ParseUser user, Task<Void> cancellationToken) {
return findAsync(state, user, cancellationToken);
}
});
}
ParseTaskUtils.callbackOnMainThreadAsync(task, callback);
}
Похоже, findInBackground тоже ничего не возвращает.Могу ли я переопределить этот метод и вернуть ему логическое значение?
Спасибо!