与已存在的一个对象建立关系

时间:2013-05-21 21:50:11

标签: objective-c core-data entity-relationship nsmanagedobject

用户必须在AllFamille中创建一个系列。在第二个视图中,用户必须在AllProduit中创建产品。创建时,用户必须选择之前创建的族。

AllFamilleAllProduit是两个不同的实体。如何在他们之间建立关系?

家庭创造:

-(IBAction)save:(id)sender
{
    app=[[UIApplication sharedApplication]delegate];
    NSManagedObjectContext *context = [app managedObjectContext];
    AllFamille *famille = [NSEntityDescription insertNewObjectForEntityForName:@"AllFamille"inManagedObjectContext:context];        
    famille.name = nameFamField.text;   

    NSError *error;        
    if (![context save:&error]) {
        NSLog(@"Erroor");
    }

    [[NSNotificationCenter defaultCenter] postNotificationName:@"famCreated" object:self];
}

产品创作:

-(void)addProd:(NSString *)idProd    
{        
    NSManagedObjectContext *context = [app managedObjectContext];

    NSError *error = nil;

    AllCodeVente * _allCodeVente = (AllCodeVente*) [NSEntityDescription insertNewObjectForEntityForName:@"AllCodeVente" inManagedObjectContext:context];

    for (NSManagedObject *obj in app.cdeVenteArray)
    {
        _allCodeVente.codeVente = [obj valueForKey:@"cdv"];
        _allCodeVente.uniteVente = [obj valueForKey:@"uv"];            
    }

    AllProduit * _allProduit = (AllProduit*) [NSEntityDescription insertNewObjectForEntityForName:@"AllProduit" inManagedObjectContext:context];
    _allProduit.libelleProduit = nomStr;
    _allProduit.familleProduit=familleStr;
    _allProduit.stockProduit =qteStockStr;
    _allProduit.prixVenteProduit=prixVente;
    _allProduit.prixAchatProduit = prixAchat;
    _allProduit.idProduit= idProd;

    [_allCodeVente addProduitObject:_allProduit];        

    if (![context save:&error]) {
        NSLog(@"Erroor");
    }            
}

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解你的问题,但你可以遵循这些提示。

以正确的方式为您的实体建模

这意味着您需要(我想)AllFamille(简称为AF)和AllProduitAP)之间的多对多关系。

例如,创建从toAllProduitsAF的名为AP的多对多关系。创建一个名为toAllFamille的关系(反向),从APAF

请参阅我的常见答案:Setting up a parent-child relationship in Core Data

检索正确的家庭

创建了一系列系列后,您可以创建产品并将它们与特定系列相关联。怎么样?

例如,创建NSFetchRequest以检索特定的AF。您需要NSPredicate。之后,只需使用检索到的族并将其分配给产品。 e.g。

AllProduit * _allProduit = (AllProduit*) [NSEntityDescription insertNewObjectForEntityForName:@"AllProduit" inManagedObjectContext:context];
_allProduit.libelleProduit = nomStr;
// your other properties here...
_allProduit.toAllFamille = retrievedAllFamille; // where this object has been retrieved with the correct request

希望有所帮助。