@@ -21,7 +21,7 @@ @implementation QKQuerySet
2121#pragma mark - Creation
2222
2323- (instancetype )initWithManagedObjectContext : (NSManagedObjectContext *)managedObjectContext entityDescription : (NSEntityDescription *)entityDescription {
24- return [self initWithManagedObjectContext: managedObjectContext entityDescription: entityDescription predicate: nil sortDescriptors: nil ];
24+ return [self initWithManagedObjectContext: managedObjectContext entityDescription: entityDescription predicate: nil sortDescriptors: nil range: NSMakeRange ( NSNotFound , NSNotFound ) ];
2525}
2626
2727- (instancetype )initWithManagedObjectContext : (NSManagedObjectContext *)managedObjectContext fetchRequest : (NSFetchRequest *)fetchRequest {
@@ -31,10 +31,10 @@ - (instancetype)initWithManagedObjectContext:(NSManagedObjectContext *)managedOb
3131 NSPredicate *predicate = [fetchRequest predicate ];
3232 NSArray *sortDescriptors = [fetchRequest sortDescriptors ];
3333
34- return [self initWithManagedObjectContext: managedObjectContext entityDescription: entityDescription predicate: predicate sortDescriptors: sortDescriptors];
34+ return [self initWithManagedObjectContext: managedObjectContext entityDescription: entityDescription predicate: predicate sortDescriptors: sortDescriptors range: NSMakeRange ( NSNotFound , NSNotFound ) ];
3535}
3636
37- - (instancetype )initWithManagedObjectContext : (NSManagedObjectContext *)managedObjectContext entityDescription : (NSEntityDescription *)entityDescription predicate : (NSPredicate *)predicate sortDescriptors : (NSArray *)sortDescriptors {
37+ - (instancetype )initWithManagedObjectContext : (NSManagedObjectContext *)managedObjectContext entityDescription : (NSEntityDescription *)entityDescription predicate : (NSPredicate *)predicate sortDescriptors : (NSArray *)sortDescriptors range : ( NSRange ) range {
3838 NSParameterAssert (managedObjectContext != nil );
3939 NSParameterAssert (entityDescription != nil );
4040
@@ -43,6 +43,7 @@ - (instancetype)initWithManagedObjectContext:(NSManagedObjectContext *)managedOb
4343 _entityDescription = entityDescription;
4444 _predicate = [predicate copy ];
4545 _sortDescriptors = sortDescriptors? [sortDescriptors copy ] : @[];
46+ _range = range;
4647 }
4748
4849 return self;
@@ -76,14 +77,15 @@ - (BOOL)isEqualToQuerySet:(QKQuerySet *)queryset {
7677 [self .managedObjectContext isEqual: [queryset managedObjectContext ]] &&
7778 [self .entityDescription isEqual: [queryset entityDescription ]] &&
7879 [self .predicate isEqual: [queryset predicate ]] &&
79- [self .sortDescriptors isEqual: [queryset sortDescriptors ]]
80+ [self .sortDescriptors isEqual: [queryset sortDescriptors ]] &&
81+ NSEqualRanges (self.range , queryset.range )
8082 );
8183}
8284
8385#pragma mark - NSCopying
8486
8587- (instancetype )copyWithZone : (NSZone *)zone {
86- return [[[self class ] allocWithZone: zone] initWithManagedObjectContext: self .managedObjectContext entityDescription: self .entityDescription predicate: self .predicate sortDescriptors: self .sortDescriptors];
88+ return [[[self class ] allocWithZone: zone] initWithManagedObjectContext: self .managedObjectContext entityDescription: self .entityDescription predicate: self .predicate sortDescriptors: self .sortDescriptors range: self .range ];
8789}
8890
8991#pragma mark - NSFastEnumeration
@@ -103,6 +105,12 @@ - (NSFetchRequest *)fetchRequest {
103105 [fetchRequest setEntity: _entityDescription];
104106 [fetchRequest setPredicate: self .predicate];
105107 [fetchRequest setSortDescriptors: self .sortDescriptors];
108+
109+ if (self.range .location != NSNotFound ) {
110+ fetchRequest.fetchOffset = self.range .location ;
111+ fetchRequest.fetchLimit = self.range .length ;
112+ }
113+
106114 return fetchRequest;
107115}
108116
@@ -195,7 +203,7 @@ - (NSUInteger)deleteObjects:(NSError **)error {
195203@implementation QKQuerySet (Sorting)
196204
197205- (instancetype )orderBy : (NSArray *)sortDescriptors {
198- return [[QKQuerySet alloc ] initWithManagedObjectContext: _managedObjectContext entityDescription: _entityDescription predicate: _predicate sortDescriptors: sortDescriptors];
206+ return [[QKQuerySet alloc ] initWithManagedObjectContext: _managedObjectContext entityDescription: _entityDescription predicate: _predicate sortDescriptors: sortDescriptors range: self .range ];
199207}
200208
201209- (instancetype )reverse {
@@ -205,7 +213,7 @@ - (instancetype)reverse {
205213 [sortDescriptors addObject: [sortDescriptor reversedSortDescriptor ]];
206214 }
207215
208- return [[QKQuerySet alloc ] initWithManagedObjectContext: _managedObjectContext entityDescription: _entityDescription predicate: _predicate sortDescriptors: sortDescriptors];
216+ return [[QKQuerySet alloc ] initWithManagedObjectContext: _managedObjectContext entityDescription: _entityDescription predicate: _predicate sortDescriptors: sortDescriptors range: self .range ];
209217}
210218
211219@end
@@ -219,15 +227,15 @@ - (instancetype)exclude:(NSPredicate *)predicate {
219227 predicate = [[NSCompoundPredicate alloc ] initWithType: NSAndPredicateType subpredicates: @[_predicate, predicate]];
220228 }
221229
222- return [[QKQuerySet alloc ] initWithManagedObjectContext: _managedObjectContext entityDescription: _entityDescription predicate: predicate sortDescriptors: _sortDescriptors];
230+ return [[QKQuerySet alloc ] initWithManagedObjectContext: _managedObjectContext entityDescription: _entityDescription predicate: predicate sortDescriptors: _sortDescriptors range: self .range ];
223231}
224232
225233- (instancetype )filter : (NSPredicate *)predicate {
226234 if (_predicate) {
227235 predicate = [[NSCompoundPredicate alloc ] initWithType: NSAndPredicateType subpredicates: @[_predicate, predicate]];
228236 }
229237
230- return [[QKQuerySet alloc ] initWithManagedObjectContext: _managedObjectContext entityDescription: _entityDescription predicate: predicate sortDescriptors: _sortDescriptors];
238+ return [[QKQuerySet alloc ] initWithManagedObjectContext: _managedObjectContext entityDescription: _entityDescription predicate: predicate sortDescriptors: _sortDescriptors range: self .range ];
231239}
232240
233241@end
0 commit comments