46 votes

Défaut de la relation CoreData ?

J'ai une commande qui a une relation "à plusieurs" avec des unités. Lorsque j'essaie d'enregistrer les unités (NSSet) dans Order, j'obtiens une erreur d'erreur :

 NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Order" 
                                          inManagedObjectContext:mainContext];
[fetchRequest setEntity:entity];
NSArray *fetchedObjects = [mainContext executeFetchRequest:fetchRequest 
                                                     error:nil];
for (Order *order in fetchedObjects) {

    NSLog(@"%@", [order units]);
    break;
}        
[fetchRequest release];

résulte en:

 Relationship 'units' fault on managed object (0x6d9dd00) <Order: 0x6d9dd00> (entity: Order; id: 0x6d88e40 <x-coredata://97A3F3D5-ABA7-499A-A460-5E25CF49C528/Order/p1> ; data: {
    composition = Hemlock;
    condition = "";
    consignee = "";
    consigneeCompanyName = "";
    contactAlternatePhone = "";
    contactEmail = "";
    contactFirstName = "";
    contactLastName = "";
    contactPhone = "";
    customer = "Havard Empire";
    customerCompanyName = "";
    customerNotes = "";
    dateDue = "1/13/2012 12:00:00 AM";
    dateEntered = "1/6/2012 12:00:00 AM";
    dateOrdered = "1/6/2012 12:00:00 AM";
    deliveryAddress1 = "";
    deliveryAddress2 = "";
    deliveryCity = "";
    deliverySpecialInstructions = "";
    deliveryState = "";
    deliveryZip = "";
    depth = 01;
    detail = "";
    freightRate = "";
    grade = Cull;
    instructionsDirectionsNotes = "";
    lastUpdated = "1/6/2012 3:00:43 PM";
    length = 01;
    location = "Lucedale, ms";
    matsPerLoad = "";
    memoLineNotes = "";
    notes = "";
    orderID = 201205134922479;
    orderNumber = 01062012;
    pUP = Cable;
    pricePerItem = "";
    purchaseOrderNumber = "";
    pushToQuickBooks = True;
    quantity = 0;
    quickbooksCompany = 1;
    salesman = "Accounting Adj";
    separateRate = False;
    taxRate = "";
    totalLoads = "";
    type = "2ply Mat";
    units = "<relationship fault: 0x6dacf20 'units'>";
    vendorID = 10;
    width = 01;
})

Les unités ne sont pas imprimées. Il dit "<relationship fault: 0x6dacf20 'units'>";

Aussi, pourquoi imprime-t-il l'objet entier alors que je ne veux que des unités ?

12voto

veducm Points 2288

Afin de voir tous les objets d'une relation "à-plusieurs" , vous pouvez l'appeler avec la allObjects de la relation NSSet .

Dans votre cas particulier, le code pour imprimer toutes les unités de la première commande en fetchedObjects serait comme ceci :

 for (Order *order in fetchedObjects) {
    NSLog(@"%@", [order.units allObjects]);
    break;
}

5voto

Louie Bertoncin Points 1126

Dans Swift, cela se passerait comme suit :

 for order in fetchedObjects {
    for unit in order.units.allObjects as [Unit] {
        println(unit)
    }
}

3voto

Ned Points 460

Oui, j'ai eu aussi le même problème. Essayez simplement d'imprimer un champ de cette table, par exemple :

     for(Category *category in fetchedObjects) 
    {
        for(Cards *card in category.cards) 
        {
            NSLog(@"Question %@", card.question);
            NSLog(@"Card %@", card);
        }
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X