Возвращает логическое значение для метода, который содержит результаты из предопределенной внутренней функции - PullRequest
0 голосов
/ 07 марта 2019
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 тоже ничего не возвращает.Могу ли я переопределить этот метод и вернуть ему логическое значение?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...