我在检索通过 Menu 实体创建的项目时确实遇到了麻烦。这是我用来将项目添加到特定菜单对象的代码
-(void)additem:(NSString *)entity :(NSDictionary *)aDictionary :(NSString *)menu
{
NSLog(@"additem");
NSError *error = nil;
Menu *menuItem = nil;
NSFetchRequest * request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Menu" inManagedObjectContext:managedObjectContext]];
[request setPredicate:[NSPredicate predicateWithFormat:@"mname=%@ and msection =%@",@"Parents",@"Keydates"]];
menuItem = [[managedObjectContext executeFetchRequest:request error:&error] lastObject];
if (error) {
//Handle any errors
}
if (!menuItem) {
//Nothing there to update
NSLog(@"This class doesn't exist");
}
Items *anitem = (Items *)[NSEntityDescription insertNewObjectForEntityForName:@"Items" inManagedObjectContext:managedObjectContext];;
anitem.type = [aDictionary objectForKey:@"type"];
anitem.title = [aDictionary objectForKey:@"title"];
anitem.image = [aDictionary objectForKey:@"image"];
anitem.subtitle = [aDictionary objectForKey:@"subtitle"];
[menuItem addItemsObject:anitem];
[managedObjectContext save:&error];
}
我想使用谓词来检索在特定 Menu 对象上创建的所有项目。这是我试图检索它的代码。
- (void) readItems: (NSString *)section {
NSLog(@"readItems");
NSError *error = nil;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Menu"
inManagedObjectContext:managedObjectContext];
fetchRequest.resultType = NSDictionaryResultType;
[fetchRequest setEntity:entity];
[fetchRequest setReturnsObjectsAsFaults:NO];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"mname=%@ and msection = %@",@"Parents",@"Keydates"]];
NSArray *fetchedObjects = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
for (Items *item in fetchedObjects) {
NSLog(@">>>>>>%@",item);
}
}
谁能指出我正确的方向。我知道我通过了部分并且不使用它。我已将实际值放入。