CoreData relation à la faute?
J'ai une Commande qui a "un à plusieurs" de la relation avec les Unités. Lorsque j'essaie de connecter les unités (NSSet) dans la Commande, je reçois une erreur de défaillance:
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ésultats dans:
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és. Il dit "<relationship fault: 0x6dacf20 'units'>";
Aussi, pourquoi est-il l'impression de la totalité de l'objet lorsque je souhaite unités?
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas une erreur - c'est une fonctionnalité de Base de Données appelé "défaillant'. Voici d'Apple description:
Si vous voulez voir chaque Unité d'objet, alors vous devrez spécifiquement accéder. Essayez ce qui suit:
allObjects
méthode de la relation de propriété de l'imprimer sans avoir à réitérer et d'accéder à l'un de leurs attributs.Pour voir tous les objets d'une "à plusieurs", relation, vous pouvez l'appeler avec la
allObjects
méthode de la relation deNSSet
.Dans votre cas particulier, le code pour l'impression de toutes les Unités de la première Ordre dans
fetchedObjects
serait comme ceci:Dans Swift elle irait comme suit:
Yep, j'ai eu également le même problème.
Essayez juste d'imprimer une partie du champ de cette table, dans l'exemple:
C'est très contre-intuitif. Je me grattais la tête pendant environ une journée entière jusqu'à ce que j'ai réalisé que je ne peux pas imprimer l'ensemble de la NSSet objet ou chaque NSManagedObject dans l'ensemble comme suit :
Cela va générer faute dans xcode .. Mais Si j'ai l'impression de chaque attribut dans chaque NSMangedObject, c'est bien. Je suppose que Apple a de la mémoire inquiétude sur le chargement Automatique-de nombreux objets. Dans un scénario où il y a une chaîne de nombreuses relations, il va consommer beaucoup de mémoire. Donc, besoin de lazy-load chaque attribut.
Qui permet d'imprimer le nom de l'unité..