0

I have iOS application which uses core data database and im using NSFetchedResultsController for populate a tableview. Im using entity named "Catalog" to populate tablview and i have thumbnail image stored in entity Named "Image" and i store image as NSData in a property of image entity, im updating that thumbnail image after populating the tableview but any of bellow methods not called.

  • (void)controllerWillChangeContent:(NSFetchedResultsController *)controller
  • (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath
  • (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id )sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type
  • (void)controllerDidChangeContent:(NSFetchedResultsController *)controller

  • But when i change a properties of "Catalog" entity itself those methods called.

Informations of My Entities

Catalog(Entity)

Attributes

title <= String nid <= String (my primary key field) some few attributes

Relationships

Relationship :thumbImage, Destination :Image, Inverse :catalog,

Image(Entity)

Attributes fid <= String (my primary key field), image <= Image Data field

Relationships

Relationship :catalog, Destination :Catalog, Inverse :thumbImage

  • Have u set the delegate? e.g typically like this `_fetchedResultsController.delegate = self;` – hp iOS Coder May 07 '13 at 07:32
  • 1
    yes i have set delegate, Delegate methods are called if when change of a attributes of catalog entity problem with changing relationship's attribute. – Chathuranga Jayawardhana May 07 '13 at 07:37
  • That is a known restriction of NSFetchedResultsController, compare http://stackoverflow.com/questions/7533849/nsfetchedresultscontroller-with-relationship-not-updating. – Martin R May 07 '13 at 07:46

1 Answers1

0

try adding this to your Image entity:

//Not tested
- (void) setImage:(NSData *)data
{
    [self.catalog willChangeValueForKey:@"thumbImage"]
    [self willChangeValueForKey:@"image"];
    [self setPrimitiveValue:data forKey:@"image"];
    [self didChangeValueForKey:@"image"];
    [self.catalog didChangeValueForKey:@"thumbImage"];
}
Dan Shelly
  • 5,991
  • 2
  • 22
  • 26
  • The lines: [self.catalog willChangeValueForKey:@"thumbImage"];,[self.catalog didChangeValueForKey:@"thumbImage"]; not calls to NSFetchedResultsControllerDelegate. help please! – evya Oct 08 '13 at 10:20
  • if this does not work, try adding an integer property to `Catalog` and increment it then the image change content (sort of 'needRefresh' property) – Dan Shelly Oct 09 '13 at 07:28
  • 1
    I can't test this at the moment. will try to get back to you when I'll have more time. – Dan Shelly Oct 09 '13 at 17:38