Я понимаю, что это довольно долго, но в настоящее время я работаю над своим первым проектом CoreData, и, несмотря на чтение каждого ресурса, я могу найти, что он еще не все утонул.пока я сохранил все и сохранил все в порядке, однако я не могу заставить отношения работать правильно.У меня есть табличное представление, которое отображает категории Exersize, который перемещается в таблицу, отображающую связанные с ней размеры Exersize (один ко многим).
(попытался опубликовать изображение, но у меня пока недостаточно точек повторения), ноdataModel выглядит следующим образом
ExersizeCategory <--- >> Exersize
Из всего, что я прочитал, я считаю, что мне может понадобиться использовать предикат для фильтрации результатов, но яЯ не совсем понимаю, как это работает на самом деле и выдерживает или нет, я даже на самом деле даже создаю и сохраняю категории Exersize и Exersizes соответственно для того, чтобы отношения работали в первую очередь.
Вот как я создаю и сохраняю (также присваиваю его имя записи в текстовом поле)
ExersizeCategory *exersizeCategory = [NSEntityDescription insertNewObjectForEntityForName:@"ExersizeCategory"
inManagedObjectContext:self.managedObjectContext];
exersizeCategory.name = self.textField.text;
[self.managedObjectContext save:nil]; // write to database
А вот код для эксермеров (в значительной степени идентичный)
// Create a new instance of the entity
exersize = [NSEntityDescription insertNewObjectForEntityForName:@"Exersize"
inManagedObjectContext:self.managedObjectContext];
exersize.name = self.textField.text;
[self.managedObjectContext save:nil]; // write to database
Хотя это похоже на работу при создании объектов, и я вижу их на табличных представлениях, которые мне еще предстоит реализовать coreDataGeneratedAccessors, как и где они вписываются в рисунок?
@interface ExersizeCategory (CoreDataGeneratedAccessors)
- (void) addExersizesObject: (Exersize *) значение;
- (void) removeExersizesObject: (Exersize *) значение;
- (void) addExersizes: (NSSet *) значения;
- (void) removeExersizes: (NSSet *) значения;
я должен упомянуть, что я использую класс CoreDataTableViewController, который, кажется, уменьшает объем кода, который вам нужно написать для выборки (который я нашел в учебнике, который я изучал на сайте www.timroadly.com), созданном Стэнфордским университетом.примечание: было бы лучше не разбивать это на подклассы и просто использовать стандартный способ, как я заметил в .h, в нем говорится, что его авторское право принадлежит Стэнфорду, поэтому я не уверен, что смогу использовать его в приложении, которое хочу выпустить?
Вот как я в данный момент выбираю для отображения Экзерсайзес
- (void)setupFetchedResultsController {
// 1 - Decide what Entity you want
NSString *entityName = @"Exersize"; // Put your entity name here
NSLog(@"Setting up a Fetched Results Controller for the Entity named %@", entityName);
// 2 - Request that Entity
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:entityName];
// 3 - Filter it if you want
//currently unsure about this!
//request.predicate = [NSPredicate predicateWithFormat:@""];
// 4 - Sort it if you want
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"name"
ascending:YES
selector:@selector(localizedCaseInsensitiveCompare:)]];
// 5 - Fetch it
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
[self performFetch];
}
Я знаю, что пропустил ключевые моменты в реализации этого, но я просто неуверен, что и где.Я изучал основные данные всего несколько дней, так что учиться было довольно здорово!
Спасибо всем, кто может пролить свет / ответить / или даже подтолкнуть меня в правильном направлении!