我正在创建一个应用程序,让销售人员可以通过iPhone为客户订购库存。
用户导航到客户并创建订单。出现一个空白的tableview,然后用户通过从库存屏幕中选择它们将项目添加到tableview。
当他们向订单添加商品时,导航控制器会弹出视图并再次显示订单视图。用户应该只能看到该客户的订单。
我最初完全使用sqlite构建应用程序,我通过使用查询
实现了这一点SELECT PRODUCT FROM TRANSLINE WHERE CUSTOMERACCNO = ?
我现在已经转移到Core Data,我需要实现相同的功能。我正在尝试使用NSPredicate在 fetchedResultsController 方法中实现此行为,但我似乎无法使其正常工作 - 我得到的只是一个空白屏幕。但是,当我没有实现它时,我得到所有订单,即每个客户的订单,而不仅仅是这个订单。
这是我的代码:
- (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;
}
提前感谢您的帮助。
答案 0 :(得分:1)
NSError *error = nil;
if (![self.fetchedResultsController performFetch:&error])
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}