2014-03-12 20 views
0

enter image description here选择一个在核心数据一对多的关系取指不工作

我用这个代码来选择与特定类别的所有产品,但它不工作,,什么是正确的断言,我可以用于获得所有与此类别相关的产品

注意: 我从服务器上单独获取类别列表并插入它们,然后从服务器获取产品列表并插入它们,但是现在我发现该产品并没有不知道他的类别,我使用restkit库来解析并插入到数据库中,所以我如何告诉产品该类别,restkit自动完成所有工作

如何将产品列表设置为我从服务器获得的类别?

//--fetching inserted Results from core data 
    // Getting products 
    NSError *error; 
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"productId" ascending:YES]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor , nil]; 
    [fetchRequest setSortDescriptors:sortDescriptors]; 
// NSPredicate *predicate = [NSPredicate predicateWithFormat:@"category = %@ ",tempCategoryHolder]; 
// [fetchRequest setPredicate:predicate] ; 


    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Product" 
               inManagedObjectContext:self.managedObjectContext]; 
    [fetchRequest setEntity:entity]; 

    fetchedObjectsProducts = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error]; 
+0

谓词为什么被注释掉?它是如何工作的?什么是'tempCategoryHolder'?如果你登录'tempCategoryHolder.products',你会得到什么? – Wain

+0

不,我只是评论它,因为代码不能很好地工作 – mohamed

+0

显示你的映射。你需要做一个外键映射连接... – Wain

回答

0

我会做这样的假设tempCategoryHolder持有的categoryId:

NSError *error = nil; 
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Product"]; 
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"category.categoryId = %@", tempCategoryHolder]; 
fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"productId" ascending:YES]]; 
NSArray *fetchedObjectsProducts = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error]; 

否则更新谓词指类别对象,或者不同的类别属性。

+0

我从服务器单独获取分类列表并插入它们,然后从服务器获取产品列表并插入它们,但是现在我发现产品不知道他的类别,我使用restkit库来解析和插入数据库,,所以我怎么能告诉产品,类别,restkit自动完成所有工作 – mohamed

+0

如何设置到产品列表我从服务器的类别? – mohamed

+0

我不使用RestKit,因此我不知道它如何将提取的数据存储到Core Data中。通常你会得到JSON或XML,解析数组或目录,一旦你持有对象,你只需插入NewObjectForEntityForName并设置它的属性。他们的关键是在Product上设置Category对象以及其他Product属性。粘贴存储和保存代码以供审阅。 –