【发布时间】:2012-03-14 02:14:28
【问题描述】:
我的核心数据模型中有一对多的关系。一餐可以有多种食物。我想用一顿饭的食物填满一张桌子。因此,如果第一餐有苹果、橙子和柠檬,那么餐桌将由这三种食物组成。
非常感谢任何帮助,因为我完全陷入困境。
这是我的模型:
还有 NSManagedObject 类:
Meal.h
@class Food;
@interface Meal : NSManagedObject
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSSet *foods;
@end
@interface Meal (CoreDataGeneratedAccessors)
- (void)addFoodsObject:(Food *)value;
- (void)removeFoodsObject:(Food *)value;
- (void)addFoods:(NSSet *)values;
- (void)removeFoods:(NSSet *)values;
@end
食物.h
@class Meal;
@interface Food : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) Meal *meals;
@end
这是我尝试尝试的代码,但我遇到了一些问题。
- (NSFetchedResultsController *)fetchedResultsController
{
if (_fetchedResultsController != nil)
return _fetchedResultsController;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Food" inManagedObjectContext:_context];
[fetchRequest setEntity:entity];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"Meal.foods == %@", entity]];
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:_context sectionNameKeyPath:nil cacheName:@"Root"];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;
[fetchRequest release];
[theFetchedResultsController release];
return _fetchedResultsController;
}
【问题讨论】:
-
你坚持什么?请准确告诉我们您的问题是什么。
-
为什么在这里使用一对多的关系?如果
Food代表一种种类的食物而不是特定的食物,那么我希望给定的Food实例能够与不止一顿饭相关。
标签: iphone objective-c ios ios4 core-data