我有2个实体位置和项目。多对多的关系。
因此每个项目可以有多个位置,任何位置都可以有多个项目。
我正在解析项目的XML而不是尝试添加位置。
所以我有ManagedObject项,我刚刚插入了位置,那么设置项目位置的语法(代码)是什么?
我看到只在ManagedObject Class中添加和删除。
以下是有效的 其中currentItem,location是两个ManagedObjects,setItem_location_relationship是Items实体中的关系名称
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Locations"
inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"location_id = %@",
[locationsArray objectAtIndex:i]];
[fetchRequest setPredicate:predicate];
NSError *error = nil;
NSArray *fetchedObjects = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
}
[fetchRequest release];
Locations *location = [fetchedObjects objectAtIndex:0];
NSSet *set = [NSSet setWithObject:location];
[currentItem setItem_location_relationship:set];
答案 0 :(得分:3)
您应该将NSManagedObject
作为子类。 Xcode将为您编写类文件。然后一切都变得简单 - Xcode将为您生成方法。假设您的实体被称为Item
和Location
,Item
中的多对多关系称为locations
,Item.h
中的这些定义应如下所示:< / p>
- (void)addLocationsObject:(NSManagedObject *)value;
- (void)removeLocationsObject:(NSManagedObject *)value;
- (void)addLocations:(NSSet *)values;
- (void)removeLocations:(NSSet *)values;
所以要添加位置对象:
Location *loc = [NSEntityDescription insertNewObjectForEntityForName:"Location"
inManagedObjectContext:self.managedObjectContext];
// ... configure loc with info from the xml feed
// or use a fetched location object
[currentItem addLocationsObject:loc];