@@ -520,30 +520,34 @@ - (BFTask *)findAsyncForQueryState:(PFQueryState *)queryState
520
520
@strongify (self);
521
521
PFConstraintMatcherBlock matcherBlock = [self .offlineQueryLogic createMatcherForQueryState: queryState user: user];
522
522
523
- BFTask *checkAllObjectsTask = [BFTask taskWithResult: nil ];
524
- for (NSString *uuid in task.result ) {
525
- __block PFObject *object = nil ;
526
-
527
- checkAllObjectsTask = [[[[checkAllObjectsTask continueWithSuccessBlock: ^id (BFTask *task) {
528
- return [self _getPointerAsyncWithUUID: uuid database: database];
529
- }] continueWithSuccessBlock: ^id (BFTask *task) {
530
- object = task.result ;
531
- return [self fetchObjectLocallyAsync: object database: database];
532
- }] continueWithSuccessBlock: ^id (BFTask *task) {
533
- if (!object.dataAvailable ) {
534
- return @NO ;
523
+ BFTask *checkAllTask = [BFTask taskWithResult: nil ];
524
+ NSArray *uuidBatches = [PFInternalUtils arrayBySplittingArray: task.result withMaximumComponentsPerSegment: 25 ];
525
+ for (NSArray *uuids in uuidBatches) {
526
+ checkAllTask = [[checkAllTask continueWithSuccessBlock: ^id (BFTask *_) {
527
+ return [self _getObjectPointersAsyncWithUUIDs: uuids fromDatabase: database];
528
+ }] continueWithSuccessBlock: ^id (BFTask PF_GENERIC (NSArray <PFObject *> *)*task) {
529
+ BFTask *checkBatchTask = [BFTask taskWithResult: nil ];
530
+ for (PFObject *object in task.result ) {
531
+ checkBatchTask = [[[checkBatchTask continueWithSuccessBlock: ^id (BFTask *_) {
532
+ return [self fetchObjectLocallyAsync: object database: database];
533
+ }] continueWithSuccessBlock: ^id (BFTask *_) {
534
+ if (!object.dataAvailable ) {
535
+ return nil ;
536
+ }
537
+ return matcherBlock (object, database);
538
+ }] continueWithSuccessBlock: ^id (BFTask *task) {
539
+ if ([task.result boolValue ]) {
540
+ [mutableResults addObject: object];
541
+ }
542
+ return nil ;
543
+ }];
535
544
}
536
- return matcherBlock (object, database);
537
- }] continueWithSuccessBlock: ^id (BFTask *task) {
538
- if ([task.result boolValue ]) {
539
- [mutableResults addObject: object];
540
- }
541
- return nil ;
545
+ return checkBatchTask;
542
546
}];
543
547
}
544
- return checkAllObjectsTask ;
548
+ return checkAllTask ;
545
549
}];
546
- }] continueWithSuccessBlock: ^id (BFTask *task ) {
550
+ }] continueWithSuccessBlock: ^id (BFTask *_ ) {
547
551
@strongify (self);
548
552
549
553
// Sort, Apply Skip and Limit
@@ -561,7 +565,7 @@ - (BFTask *)findAsyncForQueryState:(PFQueryState *)queryState
561
565
ofQueryState: queryState
562
566
inDatabase: database];
563
567
564
- return [fetchIncludesTask continueWithSuccessBlock: ^id (BFTask *task ) {
568
+ return [fetchIncludesTask continueWithSuccessBlock: ^id (BFTask *_ ) {
565
569
return results;
566
570
}];
567
571
}];
0 commit comments