NSManagedObject方法未被调用

时间:2012-09-03 13:15:00

标签: ios core-data nsmanagedobject

NSManagedObject子类中实现时,awakeFromInsert方法即awakeFromFetchNSManagedObject等未被调用。可能是什么原因?实体“类”在实体模型编辑器中设置为子类。

Event.m

#import "Event.h"

@implementation Event

@dynamic timeStamp;

- (void)awakeFromInsert {
    NSLog(@"%s", __FUNCTION__);
    [super awakeFromInsert];
}

- (void)awakeFromFetch {
    NSLog(@"%s", __FUNCTION__);
    [super awakeFromFetch];
}

@end

MyViewController(插入)

- (void)insertNewObject:(id)sender {
    NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
    NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
    NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];

    [newManagedObject setValue:[NSDate date] forKey:@"timeStamp"];

    NSError *error = nil;
    if (![context save:&error]) {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }
}

这是模型编辑器的屏幕截图。 enter image description here

注意:我在Mountain Lion上使用Xcode 4.4.1(iOS SDK 5.1),使用ARC ON。

1 个答案:

答案 0 :(得分:4)

确保将您的类添加到目标中,并确保在模型中指定它们。如果您没有在模型中指定子类,则每个实体,您在目标中包含类是无关紧要的;你只需要处理一个NSManagedObject。