Как я могу использовать базовые данные между классами? - PullRequest
0 голосов
/ 28 марта 2012

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

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

Ответы [ 3 ]

5 голосов
/ 28 марта 2012

Основная модель данных будет доступна во всем приложении. Вы можете легко получить доступ к управляемому объекту через ваше приложение. Вам просто нужно сделать экземпляр класса AppDelegate.

Скажем, например, вы сохранили контакты. Вы можете просто использовать [managedObject valueForKey:@"name"] в любом из контроллеров представления.

1. Создание экземпляра приложения Delegate

self.theappDel=[[UIApplication sharedApplication] delegate];

2. Получить контекст, запрос на выборку и описание сущности.

NSManagedObjectContext*context=[self.theappDel managedObjectContext];
NSEntityDescription*entity=[NSEntityDescription entityForName:@"Contacts" inManagedObjectContext:context];
NSFetchRequest*request=[[NSFetchRequest alloc] init];
[request setEntity:entity];
NSManagedObject*managedObject=nil;
NSError*error=nil;
NSArray*objectList=[context executeFetchRequest:request error:&error];

3. Получить управляемый объект из массива.

if([objectList count]>0)
managedObject=[objectList objectAtIndex:0];
NSLog(@"The name: %@",[managedObject valueForKey:@"name"])

4. Передайте объект name, используя шаблон singleton (или любой другой удобный метод), в других контроллерах представления, которые вам нужны.

1 голос
/ 28 марта 2012

Взгляните на библиотеку MagicalRecord .Мало того, что он делает множество общих запросов на выборку гораздо более лаконичным, он также облегчает доступ к контексту управляемого объекта с помощью [NSManagedObjectContext defaultContext];

1 голос
/ 28 марта 2012

Передайте экземпляр NSManagedObjectContext или, если вам просто нужно обработать один объект, экземпляр NSManagedObject, в следующий класс.

Как это сделано в шаблонах Xcodes Core Data.

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