我現在正在構建基於Core Data的iOS應用程序,並且當我試圖在AppDelegate.m
內執行[NSEntityDescription insertNewObjectForEintityForName:@"myModel" inManagedObjectContext:_managedObjectContext];
來插入新的託管對象時,我得到了標題中描述的錯誤。+ entityForName:在覈心數據中找不到名爲'myModel'的實體 - 缺少什麼?
這是我的AppDelegate.h
文件:
#import
@interface AppDelegate : UIResponder
@property (strong, nonatomic) UIWindow *window;
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;
// maybe required?
//@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
@end
這是我的AppDelegate.m
文件(只顯示相關部分):
#import "AppDelegate.h"
#import "MyModel.h"
#import "listViewController.h"
@implementation AppDelegate
@synthesize managedObjectContext = _managedObjectContext;
@synthesize managedObjectModel = _managedObjectModel;
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//managed object context settings
UITabBarController *tabbarController = (UITabBarController *)self.window.rootViewController;
UINavigationController *navigationController = [[tabbarController viewControllers] objectAtIndex:0];
listViewController *listcontroller = [[navigationController viewControllers] objectAtIndex:0];
listcontroller.managedObjectContext = self.managedObjectContext;
NSLog(@"%@", _persistentStoreCoordinator.managedObjectModel);
MyModel *newMyModel = [NSEntityDescription insertNewObjectForEntityForName:@"MyModel" inManagedObjectContext:_managedObjectContext];
return YES;
}
在這個應用程序,我想使用的TabBar控制器作爲根視圖控制器當應用程序啓動時,我希望導航控制器作爲TabBar控制器的根視圖控制器,並使用tableview控制器作爲導航控制器的根視圖控制器。在表格視圖控制器中,我想使用核心數據功能向用戶顯示大量實體。
如果我在NSLog()
輸出的確切點使用了斷點,它沒有返回任何錯誤。當我向前移動一行輸出日誌消息時,以下輸出將返回:
() isEditable 0, entities {
}, fetch request templates {
}
這意味着由於某些原因,我沒有實體。
那麼爲什麼在這種情況下沒有實體?因此,從這裏的this answer起,我不會拼錯我的實體名稱。此外,我的objectModelContext沒有設置爲零。我是否設置了錯誤的託管對象?我在didFinishLaunchingWithOptions
方法的前三行中做錯了什麼?
或者是否存在導致此問題的原因?或者我錯過了什麼?
我使用iOS 7和Xcode 5,並且我的實體中沒有任何託管對象 - 畢竟,當我嘗試實例化這些託管對象時發生錯誤。
謝謝。
你可以發佈你的代碼來創建你的'ManagedObjectModel'? –
我不遵循你的意思。通過編寫'@property(readonly,strong,nonatomic)NSManagedObjectModel * managedObjectModel來自動創建'ManagedObjectModel'; '在標題和'@synthesize managedObjectModel = _managedObjectModel; '在執行文件中,對嗎? – Blaszard
否 - 這些行只聲明* ManagedObjectModel屬性。您需要代碼來初始化/創建實際模型。默認情況下,Xcode將其放置在AppDelegate中的一個方法中。 –