0

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

事件.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();
    }
}

这是模型编辑器的屏幕截图。在此处输入图像描述

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

4

1 回答 1

4

确保将您的类添加到目标中,并确保在模型中指定它们。如果您没有在模型中为每个实体指定子类,那么目标中包含的类并不重要;您将只处理一个 NSManagedObject。

于 2012-09-03T22:50:19.177 回答