J'ai une structure arborescente simple dans une entité CoreData appelée "Item".Pourquoi CoreData se bloque avec "sélecteur non reconnu" lorsque j'essaie de définir une relation?
Tout article peut être parent d'un autre article et peut avoir plusieurs enfants.
Il y a des relations suivantes dans l'entité:
childItems: A Many, Destination: Point, inverse: parentItem. optionnel parentItem: Destination: Elément, inverse: childItems. option
J'utilise Xcode généré suivant Item.h:
@interface Item : NSManagedObject
{
}
@property (nonatomic, retain) NSString * title;
@property (nonatomic, retain) Item * parentItem;
@property (nonatomic, retain) NSSet* childItems;
@end
@interface Item (CoreDataGeneratedAccessors)
- (void)addChildItemsObject:(Item *)value;
- (void)removeChildItemsObject:(Item *)value;
- (void)addChildItems:(NSSet *)value;
- (void)removeChildItems:(NSSet *)value;
@end
La demande de récupération est très simple:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Item" inManagedObjectContext:[self managedObjectContext]];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObjects: sort, nil]];
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:[self managedObjectContext] sectionNameKeyPath:nil
cacheName:@"AllItemsCache"];
Lorsque je tente de mettre en relation, il se bloque tout simplement. Pourquoi?
Item *item = [itemFetchedResultsController.fetchedObjects objectAtIndex:0];
[item addChildItemsObject:childItem];
sortie de débogage:
*** -[Item addChildItemsObject:]: unrecognized selector sent to instance 0x5494140
(gdb) po 0x5494140
<Item: 0x5494140> (entity: Item; id: 0x54921d0 <x-coredata://AB862620-04BE-4E42-84A6-8723455F5957/Item/p1> ; data: {
title = Test123;
})
Je peux définir ou obtenir d'autres propriétés très bien. mais quand j'essaie de changer de relation, ça plante. Qu'est-ce que je fais de mal?
D'où vient childItem? Y a-t-il une chance que ce soit le même élément que vous essayez d'en faire un parent? – theMikeSwan