2010-05-10 4 views
0

Эй, у меня есть вопрос, связанный с CoreData. Мой проект iphone имеет 2 сущности, организацию и бренд с отношением «1 к многим» BrandsToOrg и обратным.Основные данные объединенные Запрос

Итак, у моего проекта есть Mapview, где вы можете увидеть все организации и немного подойти, когда вы нажимаете на эти организации. В подвью есть кнопка «показать бренды», в которой должен быть запущен новый TableView, который показывает только бренды принадлежат к избранной организации. Любые идеи, как я могу это кодировать?

ТНХ

NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(TitleMedium == %@)",@"Rock Antenne"];???? 
NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:self.entityName inManagedObjectContext:managedObjectContext]; 
    [request setEntity:entity]; 


    if(predicate != nil) 
    { 
    [request setPredicate:predicate]; 
    } 

    // If a sort key was passed, use it for sorting. 
    NSString *[email protected]"TitleMedium"; 
    BOOL sortAscending=YES; 
    if(sortKey != nil) 
    { 
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:sortKey ascending:sortAscending]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
    [request setSortDescriptors:sortDescriptors]; 
    [sortDescriptors release]; 
    [sortDescriptor release]; 
    } 

    NSError *error; 

    NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy]; 

    [request release]; 
    [self setEntityArray:mutableFetchResults]; 

ответ

0

Вот пример того, как вы могли бы сделать это с верхнего уровня UITableView из Оргам и детального просмотра таблицы брендов. На верхнем уровне вы делаете запрос на выборку для организаций и показываете их. Когда выбран конкретный, вы создаете подробный вид брендов. Объект BrandsViewController имеет свойство «org», которое сообщает, что отображать; он может затем ссылаться на «org.brands» (который является отношением Core to one-to-many), чтобы найти все бренды для этого дисплея. Обратите внимание, что вам не нужно делать явный вывод Core Data в BrandsViewController для получения брендов.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

BrandsViewController *targetViewController = [[BrandsViewController alloc] 
    initWithNibName:@"BrandsView" bundle:nil]; 
    // pass managedObjectContext along to new view controller 
targetViewController.managedObjectContext = self.managedObjectContext; 

// Pass the selected org to the new view controller 
targetViewController.org = (Organisation *)[fetchedResultsController objectAtIndexPath:indexPath]; 

[[self navigationController] pushViewController:targetViewController animated:YES]; 
[targetViewController release]; 
} 
+0

эй, у меня это работает с Org Tableview, и когда вы выберете строку, вы получите таблицу деталей бренда. Это все работает до сих пор, и это один из способов показать бренды. Другим способом должен быть Mapview, который показывает расположение организаций, а затем вы должны нажать кнопку, чтобы увидеть бренды. И есть моя проблема, что я получаю все бренды не от конкретной организации. –

+0

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

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