2010-10-01 6 views
0

J'ai trois entités de données de base que je suis de l'importation, ils sont:de base de données - Les relations

• tailles (Nom, Vêtements (un à plusieurs avec l'entité « Clothes »))
• Vêtements (Nom, Prix, etc ... +2 relations)
• boutique (Nom, Vêtements (un à plusieurs à l'entité "Clothes"))

Je magasins importés, en magasin et tailles dans l'entité de tailles.

Maintenant j'importe les vêtements. Au début, je fais une requête d'extraction sur les tailles et les magasins et les stocke dans un tableau. Je suis en train de boucler tous les vêtements et de remplir le dictionnaire, puis je prédit sur le tableau pour le nom et la taille du magasin pour obtenir l'objet géré pour chacun, puis essayer de stocker cela contre la relation et cela ne fonctionne pas ?

Si je fais [arrShops objectAtIndex: x] et stockez que cela fonctionne? Quel est le problème avec predicat'ing je ne peux pas obtenir l'objet géré correct de toute autre façon que je peux?

Ou existe-t-il une autre façon de mettre en place cette relation?

Merci James

EDIT


J'ai une méthode comme celui-ci pour obtenir/prédicat la boutique:

- (void) getShops { 

NSManagedObjectContext *moc = [(ImportingAppDelegate *) [[UIApplication sharedApplication] delegate] managedObjectContext]; 

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 

[fetchRequest setEntity:[NSEntityDescription entityForName:@"Shop" inManagedObjectContext:moc]]; 

NSError *error; 
arr_Manufacturers = [moc executeFetchRequest:fetchRequest error:&error]; 

NSLog(@"get: %@", [arr_Shops count]); 

[fetchRequest release]; 
} 

- (id) getShop:(NSString *)name { 

NSPredicate * predicate = [NSPredicate predicateWithFormat:@"Shop = %@", name]; 
return [arr_Shops filteredArrayUsingPredicate:predicate]; 

} 

Ensuite, lorsque vous essayez de stocker je fais ce qui suit :

moc_Clothes.Shop = [self getShop:@"Shop Name Variable"]; 
+0

Vous ne fournissez pas suffisamment d'informations. Postez votre code (et votre ou vos prédicat (s)). Décrivez * exactement * comment cela ne fonctionne pas. –

+0

Cela aide-t-il? - En outre, cela ne fonctionne pas lorsque l'application se bloque et retourne au panneau de printemps. Je vais essayer maintenant et obtenir l'erreur mais je ne pense pas qu'il y en a un? – jodm

Répondre

0

D'abord, il semblerait que vos attributs ne soient pas KVC compliant (important).

En second lieu, il semble y avoir un décalage dont vous aurez besoin d'expliquer: vous filtrer arr_Shops sur une relation, mais on ne sait pas où ce tableau vient. Dans votre méthode getShops (qui, curieusement, ne renvoie rien), vous affectez les résultats de l'extraction de toutes les instances Shop à arr_Manufacturers.

Je recommande une méthode nommée quelque chose comme -shopsWithName: qui prend un nom de chaîne et retourne un tableau de magasins (toujours laisser la possibilité de plusieurs résultats). Dans cette méthode, vous exécutez la requête d'extraction avec le prédicat de nom de la boutique.

Troisièmement, le prédicat lui-même. Vous demandez des instances Shop qui sont égales à certaines chaînes. Aucun d'eux ne sera parce qu'ils sont des magasins, pas des ficelles. Puisque vos résultats sont des instances Shop, votre prédicat doit correspondre à un attribut de cette entité. Peut-être que vous vouliez dire "nom ==% @".

+0

Devrait avoir attendu 10 minutes avant de poster; o) - Got it!Premièrement, je sais que je devrais retourner sur les getShops, je me précipite rapidement à travers cela et j'aurais pu faire une propriété et faire manuellement les getter/setters. Maintenant sur comment je l'ai réparé ... changé get getShop retourner au type de retour "NSArray" au lieu de "id", puis fait. [[self getShop: @ "Nom"] objectAtIndex: 0]; Les relations sont maintenant configurées. Bravo pour votre aide! – jodm

Questions connexes