Не удается запросить объекты 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];