核心数据 - 关系

时间:2010-10-01 13:20:49

标签: iphone objective-c core-data

我导入了三个核心数据实体,它们是:

•尺码(名称,衣服(一对多带“衣服”实体))
•衣服(名称,价格等...... +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"];

1 个答案:

答案 0 :(得分:0)

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

其次,您似乎需要解释一下:您在关系上过滤arr_Shops但是不清楚此数组的来源。在你的getShops方法中(奇怪的是它实际上没有返回任何东西),你可以将所有Shop实例的结果分配给arr_Manufacturers。

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

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