我在一個名爲「Item」的CoreData實體中有簡單的樹結構。爲什麼當我嘗試設置關係時CoreData與「無法識別的選擇器」崩潰?
任何項目都可以是其他項目的父項目,並且可以有多個子項目。
有下面的實體關係:
childItems:一對多,目標:項目,逆:parentItem。可選 parentItem:Destination:Item,inverse:childItems。可選
我使用的Xcode生成以下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
獲取請求非常簡單:
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"];
當我嘗試設置關係,它只是崩潰。爲什麼?
Item *item = [itemFetchedResultsController.fetchedObjects objectAtIndex:0];
[item addChildItemsObject:childItem];
調試輸出:
*** -[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;
})
我可以設置或獲取其他屬性就好了。但是當我嘗試改變關係時,它會崩潰。 我在做什麼錯?
childItem從哪裏來?是否有機會嘗試使它成爲父項? – theMikeSwan 2010-07-05 18:00:54