0

サブクラスに実装されている場合、 、 などのNSManagedObjectメソッドは呼び出されません。その理由は何ですか?エンティティ「クラス」は、エンティティ モデル エディタでサブクラスに設定されます。awakeFromInsertawakeFromFetchNSManagedObject

イベント.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();
    }
}

モデル エディタのスクリーンショットを次に示します。ここに画像の説明を入力

注: ARC をオンにして、Mountain Lion で Xcode 4.4.1 (iOS SDK 5.1) を使用しています。

4

1 に答える 1

4

クラスがターゲットに追加されていることを確認し、モデルで指定されていることも確認してください。エンティティごとにモデル内でサブクラスを指定しない場合、ターゲットにクラスが含まれているかどうかは問題になりません。NSManagedObject を扱うだけです。

于 2012-09-03T22:50:19.177 に答える