ошибка при использовании основных данных - PullRequest
0 голосов
/ 25 декабря 2011

Здравствуйте, я пытаюсь использовать основные данные для чтения и записи пользовательских данных.код, который я использую, выглядит следующим образом:

интерфейс AppDelegate

@interface PopAdsAppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>
{
@private
    NSManagedObjectContext *managedObjectContext_;
    NSManagedObjectModel *managedObjectModel_;
    NSPersistentStoreCoordinator *persistentStoreCoordinator_;
}

@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) UITabBarController *tabBarController;

@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;

@end

код, в котором я получаю сообщение об ошибке, находится в файле .m :

PopAdsAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];
NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"User" inManagedObjectContext:context];

эта строка в определенном

NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"User" inManagedObjectContext:context];

файле .xcdatamodeld , который у меня есть, называется UserData.xcdatamodeld, и у меня есть сущность, называемая "Пользователь".

Если честно, я не знаю, где в коде я должен указать имя файла UserData.xcdatamodeld? !!все, что я вижу в примерах, это только имя сущности!

ошибка, которую я получаю:

[PopAdsAppDelegate managedObjectContext]: нераспознанный селектор, отправленный экземпляру 0x180d60 2011-12-25 13: 36: 37.008 PopAds2 [15645: 707] * Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [PopAdsAppDelegate managedObjectContext]: нераспознанный селектор, отправленный экземпляру 0x180d60' * Стек первого вызова вызова: (0x3435f8bf 0x345af1e5 0x34362acb 0x34361945 0x342bc680 0x3c87 0x41a9 0x35d6bc39 0x35cc36e9 0x35cc36b3 0x35cc35d5 0x323718a5 0x32366545 0x32366639 0x32366243 0x32366179 0x34332075 0x34333b03 0x343332cf 0x342b54dd 0x342b53a5 0x30b39fcd 0x37736743 0x305d 0x2ff4) прекратить называется бросать exceptionkill * * * тысячу двадцать семь 1028 *

Ответы [ 3 ]

2 голосов
/ 25 декабря 2011

Ваш appDelegate не имеет метода managedObjectContext, как видно из ошибки.

Редактировать:

Взгляните на эти ссылки:
RayБлог Wenderlich
Cocoa Dev Central
Mobile Tuts

И если этого не достаточно, вы всегда можете Google it:)

1 голос
/ 25 декабря 2011

Почему бы вам не создать новый проект в XCode и не установить флажок «Основные данные» в мастере? Xcode создаст для вас новый проект, который использует Core Data. Обычно вам не нужно настраивать базовые данные самостоятельно.

1 голос
/ 25 декабря 2011

Похоже, вы не синтезировали свою собственность

Добавить

@synthesize managedObjectContext;

в файл AppDelegate.m

EDIT Я думал, что вы просто забыли инициализировать свою собственность, но кажется, что вы только начинаете изучать CoreData.

Более эффективный подход для изучения того, как инициализировать CoreData, заключается в изучении кода реализации по умолчанию, предоставленной Apple. Создайте новый проект и в мастере решили использовать CoreData. Вы получите рабочий код и увидите, что два сеттера переопределяются. При их первом вызове приватные атрибуты инициализируются. Это ленивая загрузка, инициализируйте при первой необходимости.

Вы должны также прочитать начальную точку CoreData и особенно Руководство по программированию CoreData

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