Не удается запросить объекты PFO из локального хранилища данных в подклассе PFQueryTableViewController с помощью метода queryForTable

Я пытаюсь обновить свое приложение Objective C для iOS, чтобы оно использовало локальное хранилище данных Parse, чтобы мой подкласс PFQueryTableViewController мог получать объекты PFObject из локального хранилища данных, но я получаю ошибку. В моем приложении-делегате у меня есть:

[Parse enableLocalDatastore];

В моем подклассе PFQueryTableViewController я переопределяю objectsDidLoad:

- (void)objectsDidLoad:(NSError *)error {
    [super objectsDidLoad:error];
    [PFObject pinAllInBackground:self.objects block:^(BOOL succeeded, NSError *error) {
        if (succeeded) {
            NSLog(@"Pinned OK");
        }else{
            NSLog(@"Erro: %@", error.localizedDescription);
        }
    }];
}

и получить "Закреплено ОК" в результате. Мой метод queryForTable:

- (PFQuery *)queryForTable {
    if (![PFUser currentUser]) {
        return nil;
    }

    PFQuery *query = [PFQuery queryWithClassName:self.parseClassName];
    [query fromLocalDatastore];
    [query orderByAscending:@"name"];
    [query whereKey:@"user" equalTo:[PFUser currentUser]];

    return query;
}

Когда я запускаю это, я получаю такой результат:

2015-03-21 17:07:21.193 Yoyo[6079:11678859] [Error]: Caught "NSInvalidArgumentException" with reason "*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[0]":
(
    0   CoreFoundation                      0x0000000105deaa75 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x0000000105a83bb7 objc_exception_throw + 45
    2   CoreFoundation                      0x0000000105cb0c78 -[__NSPlaceholderArray initWithObjects:count:] + 360
    3   CoreFoundation                      0x0000000105d0fbe4 +[NSArray arrayWithObjects:count:] + 52
    4   Yoyo                                0x00000001040b15c8 -[PFOfflineStore findAsyncForQuery:user:pin:isCount:database:] + 741
    5   Yoyo                                0x00000001040b10b0 __53-[PFOfflineStore findAsyncForQuery:user:pin:isCount:]_block_invoke + 89
    6   Yoyo                                0x000000010409ddc0 __41-[BFTask continueWithExecutor:withBlock:]_block_invoke_2 + 30
    7   Yoyo                                0x000000010409ea67 __29+[BFExecutor defaultExecutor]_block_invoke_2 + 331
    8   Yoyo                                0x000000010409eec9 -[BFExecutor execute:] + 65
    9   Yoyo                                0x000000010409dd7e __41-[BFTask continueWithExecutor:withBlock:]_block_invoke + 127
    10  Yoyo                                0x000000010409da29 -[BFTask runContinuations] + 399
    11  Yoyo                                0x000000010409d2dc -[BFTask trySetResult:] + 151
    12  Yoyo                                0x000000010409d217 -[BFTask setResult:] + 17
    13  Yoyo                                0x000000010409bf8c -[BFTaskCompletionSource setResult:] + 79
    14  Yoyo                                0x000000010409de7d __41-[BFTask continueWithExecutor:withBlock:]_block_invoke_2 + 219
    15  Yoyo                                0x000000010409ea67 __29+[BFExecutor defaultExecutor]_block_invoke_2 + 331
    16  Yoyo                                0x000000010409eec9 -[BFExecutor execute:] + 65
    17  Yoyo                                0x000000010409dd7e __41-[BFTask continueWithExecutor:withBlock:]_block_invoke + 127
    18  Yoyo                                0x000000010409da29 -[BFTask runContinuations] + 399
    19  Yoyo                                0x000000010409d2dc -[BFTask trySetResult:] + 151
    20  Yoyo                                0x000000010409d217 -[BFTask setResult:] + 17
    21  Yoyo                                0x000000010409bf8c -[BFTaskCompletionSource setResult:] + 79
    22  Yoyo                                0x000000010409e006 __41-[BFTask continueWithExecutor:withBlock:]_block_invoke_3 + 285
    23  Yoyo                                0x000000010409ddc0 __41-[BFTask continueWithExecutor:withBlock:]_block_invoke_2 + 30
    24  Yoyo                                0x000000010409ea67 __29+[BFExecutor defaultExecutor]_block_invoke_2 + 331
    25  Yoyo                                0x000000010409eec9 -[BFExecutor execute:] + 65
    26  Yoyo                                0x000000010409dd7e __41-[BFTask continueWithExecutor:withBlock:]_block_invoke + 127
    27  Yoyo                                0x000000010409dc12 -[BFTask continueWithExecutor:withBlock:] + 277
    28  Yoyo                                0x000000010409e19a -[BFTask continueWithBlock:] + 87
    29  Yoyo                                0x000000010409de48 __41-[BFTask continueWithExecutor:withBlock:]_block_invoke_2 + 166
    30  libdispatch.dylib                   0x00000001080db186 _dispatch_call_block_and_release + 12
    31  libdispatch.dylib                   0x00000001080fa614 _dispatch_client_callout + 8
    32  libdispatch.dylib                   0x00000001080e4552 _dispatch_root_queue_drain + 1768
    33  libdispatch.dylib                   0x00000001080e5b17 _dispatch_worker_thread3 + 111
    34  libsystem_pthread.dylib             0x000000010847f637 _pthread_wqthread + 729
    35  libsystem_pthread.dylib             0x000000010847d40d start_wqthread + 13
).

Я не сталкивался с этой ошибкой, даже будучи связанной с локальным хранилищем данных в Интернете. Когда я закомментирую [query fromLocalDatastore];, он работает нормально и как будто локальное хранилище данных не включено (ничего не загружается, если не подключен к Интернету). В чем может быть проблема?

1 ответ

У меня была очень похожая проблема сегодня - чтобы заставить это работать, мне пришлось заменить следующее в запросе:

PFQuery *query = [PFQuery queryWithClassName:self.parseClassName];

за

PFQuery *query = [NameOfMyPFObjectSubclass query];
Другие вопросы по тегам