2009-09-05 2 views
0

Я создал приложение с 2 объектами, называемыми категориями1 и категорией2. Между категорией1 и категорией2 существует взаимосвязь «многие». Когда ячейка будет нажата в tableview (category1), новое представление таблицы отобразит все ячейки категории2, относящиеся к категории1. Вот пример:Iphone Core data question

У меня есть два элемента категории1 в первом представлении таблицы, называемые Food and Snacks. Пункт «Еда» имеет подкатегорию (категория 2), которая содержит 5 различных видов пищи. В разделе «Закуски» есть субкатегория (категория2), которая содержит 10 различных закусок.

Поэтому, когда я нажимаю пищевой продукт (категория 1), я просто хочу, чтобы товар был загружен (5 из них). Прямо сейчас, я вижу все 5 пунктов питания в таблицеView, плюс 10 предметов из категории «закуски» категории2.

Я использую этот код в category2:

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Folder" inManagedObjectContext: tag.managedObjectContext]; 
[request setEntity:entity]; 

//NSMutableSet *filtered = [tag mutableSetValueForKey:@"folders"]; 

// Order the events by creation date, most recent first. 
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"creationDate" ascending:NO]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
[request setSortDescriptors:sortDescriptors]; 
[sortDescriptor release]; 
[sortDescriptors release]; 

// Execute the fetch -- create a mutable copy of the result. 
NSError *error = nil; 
NSMutableArray *mutableFetchResults = [[tag.managedObjectContext executeFetchRequest:request error:&error] mutableCopy]; 
if (mutableFetchResults == nil) 
{ 
    // Handle the error. 
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
    exit(-1); // Fail 
} 

// Set self's events array to the mutable array, then clean up. 
[self setTagsArray:mutableFetchResults]; 
[mutableFetchResults release]; 
[request release]; 

нужна помощь!

благодарит заранее!

ответ

-1

Сделайте это во взглядах, так что есть два вида для подкатегорий, один для еды, один для закусок. Затем, на первом столе, установите его так, что, когда вы нажмете на еду, он перейдет к виду еды, то же самое с закусками. Если вы не можете заставить его работать, попробуйте использовать UIButtons. Что я делаю, если все остальное не удается, перейдите в UIButtons :) Если вам нужна помощь в его переключении, я привел пример как часть моих 25 приложений в августовском проекте, вы можете найти мой пример здесь: http://appeveryday.wordpress.com/2009/08/02/app-3/

+0

Привет матовый, спасибо за ответ. Тем не менее, я думаю, мне нужно уточнить, что мне нужно делать. Выбранный выше код выборки будет извлекать все элементы во всех подкатегориях и помещать их в массив. Я хочу только получить элементы, относящиеся к определенной категории. Как мне это сделать? спасибо – 2009-09-05 01:06:13

+0

ах. Теперь я вижу Просто создайте NSArray для каждой категории, затем вызовите каждый массив по мере необходимости в проекте как ячейки UITableView –

1

Первый немного советов. В представлении корневого стола вы должны использовать NSFetchedRequestController для управления объектами верхнего уровня. Взгляните на приложение Recipes в образце кода Apple для демонстрации.

Что касается основной проблемы, которую вы видите, то вам следует нажать объект category1 на контроллер дочернего представления. Контроллер дочернего представления может затем запросить объект category1 для отображения всех его дочерних элементов. Никакой выборки не требуется на контроллере дочернего представления, поскольку у вас уже есть родительский объект. Опять же, приложение примера рецептов от Apple продемонстрирует это достаточно четко для вас.

Смежные вопросы