Вот мои методы AppDelegate.h, persistentStoreCoordinator и managedObjectModel.
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
@class ViewController;
@interface AppDelegate : NSObject <UIApplicationDelegate>{
UIWindow *window;
ViewController *viewController;
@private
NSManagedObjectContext* managedObjectContext_;
NSManagedObjectModel* managedObjectModel_;
NSPersistentStoreCoordinator* persistentStoreCoordinator_;
}
@property (strong, nonatomic) IBOutlet UIWindow *window;
@property (strong, nonatomic) IBOutlet ViewController *viewController;
@property (nonatomic, retain, readonly) NSManagedObjectContext* managedObjectContext;
@property (nonatomic, retain, readonly) NSManagedObjectModel* managedObjectModel;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator*
persistentStoreCoordinator;
@end
-(NSManagedObjectModel*)managedObjectModel{
if (managedObjectModel_ != nil) {
return managedObjectModel_;
}
managedObjectModel_ = [NSManagedObjectModel mergedModelFromBundles:nil];
return managedObjectModel_;
}
-(NSPersistentStoreCoordinator*)persistentStoreCoordinator{
if (persistentStoreCoordinator_ != nil) {
return persistentStoreCoordinator_;
}
NSString* dir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES) lastObject];
NSURL* storeURL = [NSURL fileURLWithPath:[dir stringByAppendingPathComponent:@"Shapes2.sqlite"]];
NSError* error = nil;
persistentStoreCoordinator_ = [[NSPersistentStoreCoordinator alloc]
initWithManagedObjectModel:[self managedObjectModel]];
if (![persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil URL:storeURL options:nil error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return persistentStoreCoordinator_;
}
Проблема начинается с строки persistentStoreCoordinator_ = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
в методе persistentStoreCoordinator
. Когда он пытается выполнить [self managedObjectModel]
, он переходит к методу managedObjectModel
, описанному выше, и вылетает в строке managedObjectModel_ = [NSManagedObjectModel mergedModelFromBundles:nil];
.
Я думаю, что проблема в другом ... поэтому, если вы видите какую-либо проблему, пожалуйста, дайте мне знать.
Спасибо, что уделили время!
Я читал книгу "Pro Core Data для iOS", писал код до с.147 в главе 5.
До этого момента программа создавалась и работала без проблем, но как только я добавил строку ниже в
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
метод, он дал мне ошибку следующим образом "Поток 1: Программа получила сигнал:" SIGABRT "
Строка, которую я добавил, была:
viewController.managedObjectContext = self.managedObjectContext;
Я много раз следовал коду в программе, но не понял, что пошло не так ...
Если вы читаете эту книгу, я буду признателен за вашу помощь ... спасибо.