Использование NSManagedObject вручную - что-то не так с NSManagedContext, который я получаю? - PullRequest
0 голосов
/ 19 августа 2009

Я новичок в программировании Какао и решил для своего первого проекта создать небольшое приложение для мониторинга и запоминания определенных характеристик батареи для моего ноутбука. (У меня он подключен большую часть времени, и Apple рекомендует разряжать его время от времени, так почему бы не попробовать создать небольшую программу, которая поможет вам вспомнить это?))

В любом случае, у меня есть стандартный проект Objective-C с файлом DataModel. Он содержит объект, BatteryEvent, со свойствами, зарядом и событием.

Тогда у меня есть PowerListener.m (и .h). PowerListener.m реализован следующим образом:

    @implementation PowerListener
void myPowerChanged(void * context) {
    printf("Is charging: %d\n", [PowerFunctions isCharging]);
    printf("Is on ac: %d\n", [PowerFunctions isOnAC]);
    printf("Charge left: %d\n", [PowerFunctions currentCapacity]);
    printf("Powerchanged\n");
    NSManagedObject *newBatteryEvent = [NSEntityDescription 
                        insertNewObjectForEntityForName:@"BatteryEvent" 
                                     inManagedObjectContext:context];
}

- (PowerListener*) init {
    self = [super init];
    if(self) {
        CFRunLoopSourceRef loop = IOPSNotificationCreateRunLoopSource(myPowerChanged, [[NSApp delegate] managedObjectContext]);
        CFRunLoopAddSource(CFRunLoopGetCurrent(), loop, kCFRunLoopDefaultMode);
        CFRelease(loop);
    } else {
        printf("Error\n");
    }
    return self;
}
@end

Моя проблема в том, что после того, как я запустил это (инициировано через main-метод main.m), и мощность действительно изменилась, я получаю сообщение об ошибке, в котором я пытаюсь создать новый объект BatteryEvent:

2009-08-19 17:59:46.078 BatteryApp[5851:813] +entityForName: could not locate an NSManagedObjectModel for entity name 'BatteryEvent'

Так мне кажется, что у меня неправильный ManagedContext? Как мне получить правильный? Я даже на правильном пути здесь?

Я также пытался передать другой тип NSManagedObjectContext в функцию обратного вызова. Я следовал этому руководству: Руководство по основным данным , но опять та же ошибка ...

Я в своем уме!

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 19 августа 2009

Похоже, ваше приложение не загружает управляемую объектную модель как часть запуска и / или инициализации стека базовых данных.

Куда загружена ваша модель?

Кроме того, убедитесь, что вы правильно написали имя объекта в модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...