Rather than trying to do this manually, all you need to do is read the state of the cell's object from the core data store and set the background colour appropriately.
I would also recommend using an NSFetchedResultsController as you datasource. It's designed to work well with Core Data and tableviews, and if you set up the delegates properly, it will even respond to changes in the model without any intervention from you.
edit
Following on from the comments you've added, I can see what the problem is.
Core Data stores objects not values. So when you try and put values into a core data store you turn them into objects first. And when you get the object out of core data you need to translate it into the value you want.
You can see this in what you are doing yourself when you add objects to your managed object:
[transaction setValue:@(self.wasOptions.selectedSegmentIndex == 0) forKey:@"wasReceived"];
This expression returns a BOOL
self.wasOptions.selectedSegmentIndex == 0
A BOOl is a value and can't be stored into Core Data, so you turn it into an NSNumber representation with:
@(self.wasOptions.selectedSegmentIndex == 0)
So you now have an NSNumber object representing the BOOL value of YES or NO stored in core data.
When you try and get the value for your key:
[transaction valueForKey:@"wasReceived"]
This is returning the NSNumber representation not the BOOL value it represents
In order to get the actual BOOL, use a convenient method from NSNumber boolValue
. So to fix your problem replace this expression:
[transaction valueForKey:@"wasReceived"]
with this expression:
[[transaction valueForKey:@"wasReceived"] boolValue]
which returns a proper BOOL value that your conditional can operate on.