- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在使用 Apple 的 CoreDataBooks 示例项目作为核心数据的学习辅助工具。
我修改了应用程序,以便在加载应用程序时首先显示菜单页面 - 而不是 Books TableView (RootViewController)。
我做了以下事情:
我在界面生成器中创建了一个菜单页面(只是一个带有按钮的 View )
CoreDataBooksAppDelegate.h 现在看起来像这样:
// for the menu
@class MenuViewController;
@interface CoreDataBooksAppDelegate : NSObject <UIApplicationDelegate> {
NSManagedObjectModel *managedObjectModel;
NSManagedObjectContext *managedObjectContext;
NSPersistentStoreCoordinator *persistentStoreCoordinator;
UIWindow *window;
UINavigationController *navigationController;
//for the menu
MenuViewController *viewController;
}
- (IBAction)saveAction:sender;
//for the menu
@property (nonatomic, retain) IBOutlet MenuViewController *viewController;
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@property (nonatomic, readonly) NSString *applicationDocumentsDirectory;
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
@end
CoreDataBooksAppDelegate.m 如下所示:
#import "CoreDataBooksAppDelegate.h"
#import "RootViewController.h"
// for the menu
#import "MenuViewController.h"
@implementation CoreDataBooksAppDelegate
@synthesize window;
@synthesize navigationController;
// for the menu
@synthesize viewController;
#pragma mark -
#pragma mark Application lifecycle
- (void)applicationDidFinishLaunching:(UIApplication *)application {
RootViewController *rootViewController = (RootViewController *)[navigationController topViewController];
rootViewController.managedObjectContext = self.managedObjectContext;
// for the menu
[window addSubview:viewController.view];
// Configure and show the window
[window makeKeyAndVisible];
}
CoreDataAppDelegete.m 的其余部分保持不变。
在MenuViewController中,当按钮被点击时,会发生以下 Action :
RootViewController *modalViewController1 = [[[RootViewController alloc] initWithNibName:nil bundle:nil] autorelease];
[self presentModalViewController:modalViewController1 animated:YES];
在 IB 中,我将 MainWindow.xib 更改为调用 MenuViewController 而不是 RootViewController。
因此,应用程序已加载,并且菜单通过按钮正确显示。单击按钮后,应用程序在 RootViewController 的 viewDidLoad 内崩溃。
这里崩溃了:
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"1 START viewDidLoad RootViewController");
self.title = @"Books";
// Set up the edit and add buttons.
self.navigationItem.leftBarButtonItem = self.editButtonItem;
NSLog(@"2 setup button viewDidLoad RootViewController");
// Configure the add button.
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addBook)];
self.navigationItem.rightBarButtonItem = addButton;
[addButton release];
NSLog(@"3 viewDidLoad RootViewController");
NSError *error;
// HERE IS THE CRASH SITE
if (![[self fetchedResultsController] performFetch:&error]) {
NSLog(@"Does not reach this point in viewDidLoad RootViewController");
// Update to handle the error appropriately.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort(); // Fail
}
NSLog(@"END viewDidLoad RootViewController");
}
在控制台中我收到以下信息:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'Book''
我已阅读有关此异常的信息,但我不知道解决它的正确步骤。
最佳答案
好的。
将以下代码放在 RootViewController 的 viewDidLoad 中可消除错误:
if (managedObjectContext == nil)
{
managedObjectContext = [(CoreDataBooksAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
NSLog(@"After managedObjectContext: %@", managedObjectContext);
}
我在 SO:link text 上发现有人遇到类似问题
正如 Aryeh 在该帖子中指出的那样:“简而言之,您正在尝试从尚未设置的 objectContext 中获取实体。因此,您的选择是立即设置它,或者之前在应用程序的其他地方进行设置加载此 View 。”
关于iphone - 核心数据 iPhone : could not locate an NSManagedObjectModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1632497/
这是toggleAddProject方法的代码,核心数据代码与Apple的CoreDataBooks示例中的代码几乎相同,但是当我单击添加按钮时,应用程序崩溃并显示entityForName:无法找到
如果实体始终在通过合并相关模型创建的 NSManagedObjectModel 中使用,是否可以对单独 NSManagedObjectModel 中定义的实体之间的关系进行建模? 例如,假设模型 1
我正在使用Core Data,并且在我的应用程序开始时就很难将数据导入数据库。 以下是我遵循的教程中获取的一些代码。 下面概述了我获得SIGABRT的要点。 任何建议或帮助表示赞赏 谢谢 //THIS
我得到错误: Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entit
我有以下要求:使用 .xml 文件中的数据创建并填充 SQLite 数据库,该文件可以随时具有不同的结构,因此我无法使用 Xcode 创建 NSManagedObjectModel,它必须在运行时。我
谁能告诉我有关在 Xcode 中动态构建核心数据模型的教程?我找到的所有教程都基于静态设计,但苹果文档说可以通过编程方式构建模型。遗憾的是,苹果文档集中没有这方面的示例。 最佳答案 您必须初始化一个N
NSManagedObjectModel -versionIdentifiers 的文档说, The Core Data framework does not give models a defaul
有人想要合并多个 NSManagedObjectModel 有几个原因。如果你在网上搜索,所有的回答都是不可能的,或者只有共享一种或多种关系的两个不相关的实体才有可能。请参阅this和 this例如链
我正在尝试在我已经开始的项目中设置核心数据。我已经解决了一些其他错误,但现在已将范围缩小到这个, *** Terminating app due to uncaught exception 'NSIn
我真的不明白为什么我的 map 方法会出错。错误是调用中的额外参数。 这个有效: let url1 = NSURL(string: "123"); let url2 = NSURL(string: "
我正在尝试将我的代码从 Objective-C 转换为 Swift,但是对于 NSManagedObjectModel 我收到此错误: Use of undeclared type NSManaged
这是 viewDidLoad 中 fetchRequest 的代码,该代码来自找到的教程 here只是我以编程方式链接导航 Controller 和 tableview,而不是使用界面生成器。实体 P
我正在使用 SWIFT 以编程方式在核心数据的托管对象模型中创建实体。 当我创建一个 NSEntityDescription 数组并将其传递给 让 managedObjectModel : NSMan
我正在使用 Apple 的 CoreDataBooks 示例项目作为核心数据的学习辅助工具。 我修改了应用程序,以便在加载应用程序时首先显示菜单页面 - 而不是 Books TableView (Ro
我有一个包含 15 个版本的核心数据模型。它有代码可以在发布时逐步从当前商店的版本迁移到最新版本。 关键是调用 NSDictionary* options = @{ NSMigratePers
自从我连接核心数据堆栈并迁移数据库以来,我几个月来一直在一个使用核心数据的项目中顺利进行,昨晚刚刚开始在托管对象模型上出现错误。 我知道它正在做的是尝试在这一行中建立一个托管对象上下文 NSEntit
我有一个项目,当我为 iOS 4.x 构建它时工作正常,但是当我为 iOS 5.x 构建它时它失败并崩溃。澄清一下,4.x 构建可以在 iOS 5.1 上正常运行,但是当我针对 5.0 或 5.1 构
我们在 Appstore 中的实时应用程序崩溃,原因如下 Fatal Exception: NSInvalidArgumentException CoreData: Cannot load NSMan
您好,我正在创建一个应用程序,它需要将我的标签内容中的数据保存到我的核心数据模型中,该模型被命名为 cart.xcdatamodeld,我的实体被命名为 Cartdetail。当我在我的应用程序中按下
当你编写一个使用 CoreData 的静态库时,将一个普通的 .xdatamodeld 文件包含到项目中会是一团糟,因为你不能简单地将它的编译版本 (.momd) 链接到你的二进制文件中,所以最好创建
我是一名优秀的程序员,十分优秀!