Я создаю приложение, которое позволяет продавцу заказывать акции для своих клиентов со своего iPhone.
Пользователь переходит к клиенту и создает заказ. Появляется пустой вид таблицы, а затем пользователь добавляет элементы в вид таблицы, выбирая их на экране инвентаря.
Когда они добавляют элемент в заказ, контроллер навигации открывает представление и снова показывает представление заказа. Пользователь должен видеть только заказы для этого клиента.
Я изначально построил приложение полностью в sqlite и достиг этого, используя запрос
SELECT PRODUCT FROM TRANSLINE WHERE CUSTOMERACCNO = ?
Я перешел на Core Data, и мне нужно добиться той же функциональности. Я пытаюсь реализовать это поведение в методе fetchedResultsController с использованием NSPredicate, но я не могу заставить его работать - все, что я получаю, это пустой экран. Однако, когда я его не реализую, я получаю ALL заказов, т.е. заказов для каждого клиента, а не только для этого.
Вот мой код:
- (NSFetchedResultsController *)fetchedResultsController
{
if (__fetchedResultsController != nil) {
return __fetchedResultsController;
}
// Create the fetch request for the entity.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// Configure the Entity
NSEntityDescription *entity = [NSEntityDescription entityForName:@"TransLine" inManagedObjectContext:__managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:20];
//Configure the predicate
[NSFetchedResultsController deleteCacheWithName:@"Root"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"customerAccountNo == %@", _customerAccountNo];
[fetchRequest setPredicate:predicate];
//Configure Sort Descriptors
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"PRODAC" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
// nil for section name key path means "no sections".
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:__managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
[aFetchedResultsController release];
[fetchRequest release];
[sortDescriptor release];
[sortDescriptors release];
return __fetchedResultsController;
}
Заранее спасибо за вашу помощь.