2010-10-01 121 views
0

我有我导入到三个核心数据实体,它们分别是:核心数据 - 关系

•尺寸(姓名,衣服(一对多与“衣服”实体))
•服装(名称,价格,等... +2关系)
•店(名称,衣服(一对多到“衣服”实体))

我已经导入的商店,到店和尺寸为尺寸实体。

现在我正在导入衣服。在开始时,我会对尺寸和商店执行提取请求,并将它们存储到数组中。

我正在循环所有的衣服和填充字典,然后我预测阵列的商店名称和大小,以获得每个托管对象,然后尝试和存储这对抗关系,它不起作用?

如果虽然我[arrShops objectAtIndex:x]并存储它的作品?

预测有什么问题我不能以任何其他方式获得正确的托管对象?

或者还有另一种建立这种关系的方式?

感谢 詹姆斯

编辑


我有一个这样的方法来获取/谓词店:尝试存储我这样做的时候

- (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]; 

} 

然后:

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

您无法提供足够的信息。发布你的代码(和你的谓词)。完全描述*它如何不起作用。 – 2010-10-01 13:24:46

+0

这有帮助吗? - 当应用程序崩溃并返回到弹簧板时它也不起作用。我会尝试现在并得到错误,但我不认为有一个? – jodm 2010-10-01 13:29:28

回答

0

首先,它看起来像你的属性不是KVC compliant(重要)。

其次,您似乎需要解释一个断开连接:您正在筛选关系上的arr_Shops,但尚不清楚此数组来自哪里。在你的getShops方法中(奇怪的是它实际上并没有返回任何东西),你将所有Shop实例的结果分配给arr_Manufacturers。

我推荐一个名为类似于--shopsWithName的方法,它需要一个字符串名称并返回一组商店(总是允许多个结果的可能性)。在此方法中,您使用商店名称谓词运行获取请求。

第三是谓词本身。你要求Shop实例等于某个字符串。他们都不会是因为他们是商店,而不是字符串。由于您的结果是Shop实例,因此您的谓词应该匹配该实体的属性。也许你的意思是“名字==%@”。

+0

应该在发布前等待10分钟; o) - 明白了! 首先,我知道我应该返回getShops,我很快冲过去,并且我可以创建一个属性并手动创建getter/setter。 现在到我如何修复它...更改getShop返回到“NSArray”返回类型,而不是“ID”,然后做。 [[self getShop:@“Name”] objectAtIndex:0]; 现在已建立关系。 欢迎您的帮助! – jodm 2010-10-01 13:57:21