我目前正在开展一个测试项目,该项目有一个标签栏,一个分区列表 - >学校 - >学校的细节。
数据存储正在使用核心数据/ .mysqlite
**区的视图是列出区域的简单表格列表 ***学校的视图是一个带有自定义单元格的表格视图,显示所选区域的学校的名称,地址和图片 ***详细信息视图是一个分段表,其中包含所选学校的更多详细信息。
我已经设法正确设置区域表视图并正确显示但我仍然坚持推动第二个视图,即学校视图。如何将数据传递到第二个视图或切换获取结果实体?我尝试了不同的方法,但它有错误,可能是因为我使用了错误的方法或在didSelectRow上遗漏了一些东西
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'+ entityForName:无法找到实体名称'School'的NSManagedObjectModel
我无法找出问题所在。如果有人能给我一些提示,那就太好了。
DistrictListTableViewController - FRO,MOC获取“区”
NSEntityDescription * entity = [NSEntityDescription entityForName:@“District”inManagedObjectContext:managedObjectContext]; [fetchRequest setEntity:entity];
@class District;
@interface DistrictListTableViewController:UITableViewController { @私人的 NSFetchedResultsController * fetchedResultsController; NSManagedObjectContext * managedObjectContext; }
@property(nonatomic,retain)NSFetchedResultsController * fetchedResultsController;
@property(nonatomic,retain)NSManagedObjectContext * managedObjectContext;
SchoolListTableViewController - FRO,MOC取“学校”
NSEntityDescription * entity = [NSEntityDescription entityForName:@“School”inManagedObjectContext:managedObjectContext]; [fetchRequest setEntity:entity];
@class School;
@interface DistrictListTableViewController:UITableViewController { @私人的 NSFetchedResultsController * fetchedResultsController; NSManagedObjectContext * managedObjectContext; }
@property(nonatomic,retain)NSFetchedResultsController * fetchedResultsController;
@property(nonatomic,retain)NSManagedObjectContext * managedObjectContext;
DistrictListTableViewController& SchoolListTableViewController .m文件几乎相同,只是School View加载了SchoolTableViewCell文件,我不知道这是否是正确的方法。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
SchoolListTableViewController * schoolViewController = [[SchoolListTableViewController alloc] initWithStyle:UITableViewStylePlain];
[self.navigationController pushViewController:mallViewController animated:YES];
[schoolViewController发布];
}
我对此很陌生,所以请告诉我哪里做错了,将实体和数据传递到第二个视图的正确方法是什么。
非常感谢。
谢谢,这是我的fetchedcontroller部分
> - (NSFetchedResultsController *)fetchedResultsController {
if (fetchedResultsController != nil) {
return fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"District" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *locateDescriptor = [[NSSortDescriptor alloc] initWithKey:@"territory" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:locateDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"territory" cacheName:@"Root"];
self.fetchedResultsController = aFetchedResultsController;
fetchedResultsController.delegate = self;
[aFetchedResultsController release];
[fetchRequest release];
[locateDescriptor release];
[sortDescriptors release];
return fetchedResultsController;
}
所以,在学校控制器中,我只需将“学区”改为“学校”,并用学校的名称对说明进行排序。
答案 0 :(得分:0)
您看到entityForName: could not locate an NSManagedObjectModel for entity name 'School'
的异常告诉您Core Data无法找到School
模型的定义,因此在您执行任何其他操作之前,请先知道您必须先解决此问题
查看fetchedResultsController
的代码可能会有所帮助,以便我们可以看到您如何实例化ivar。