File tree Expand file tree Collapse file tree 2 files changed +24
-6
lines changed Expand file tree Collapse file tree 2 files changed +24
-6
lines changed Original file line number Diff line number Diff line change @@ -17,7 +17,7 @@ extension QuerySet {
1717 /// Performs a query for the count of all objects matching the set predicate.
1818 /// Emits an Int containing the amount of objects matching the predicate and updates when the managed object context is changed.
1919 public func count( ) throws -> Observable < Int > {
20- var count : Int = try self . count ( )
20+ var count : Int = try self . count ( )
2121
2222 return Observable . create { observer in
2323 observer. on ( . Next( count) )
@@ -30,15 +30,20 @@ extension QuerySet {
3030 $0. entity. name == self . entityName
3131 }
3232
33+ var delta = 0
34+
3335 if let predicate = self . predicate {
34- count += ( insertedObjects as NSArray ) . filteredArrayUsingPredicate ( predicate) . count
35- count -= ( deletedObjects as NSArray ) . filteredArrayUsingPredicate ( predicate) . count
36+ delta += ( insertedObjects as NSArray ) . filteredArrayUsingPredicate ( predicate) . count
37+ delta -= ( deletedObjects as NSArray ) . filteredArrayUsingPredicate ( predicate) . count
3638 } else {
37- count += insertedObjects. count
38- count -= deletedObjects. count
39+ delta += insertedObjects. count
40+ delta -= deletedObjects. count
3941 }
4042
41- observer. on ( . Next( count) )
43+ if delta != 0 {
44+ count += delta
45+ observer. on ( . Next( count) )
46+ }
4247 }
4348 }
4449 }
Original file line number Diff line number Diff line change @@ -45,6 +45,11 @@ class RxQueryKitTests: XCTestCase {
4545 try ! context. save ( )
4646 XCTAssertEqual ( counts, [ 0 , 3 , 1 ] )
4747
48+ // Doesn't update when nothing changes
49+ Comment . create ( context, text: " Hello World " )
50+ try ! context. save ( )
51+ XCTAssertEqual ( counts, [ 0 , 3 , 1 ] )
52+
4853 disposable. dispose ( )
4954 }
5055}
@@ -88,8 +93,16 @@ class RxQueryKitTests: XCTestCase {
8893 let entity = NSEntityDescription ( )
8994 entity. name = " Comment "
9095 entity. managedObjectClassName = " Comment "
96+ entity. properties = [ text]
9197 return entity
9298 }
9399
100+ class func create( context: NSManagedObjectContext , text: String ) -> Comment {
101+ let entity = NSEntityDescription . entityForName ( " Comment " , inManagedObjectContext: context) !
102+ let comment = Comment ( entity: entity, insertIntoManagedObjectContext: context)
103+ comment. text = text
104+ return comment
105+ }
106+
94107 @NSManaged var text : String
95108}
You can’t perform that action at this time.
0 commit comments