コア データも組み込む iOS のシングル ビュー アプリケーションを作成しました。.xcdatamodel ファイルを別のアプリケーションから移動し、現在作業中のアプリケーションに入れましたが、問題が発生しています。私が行ったことは、前のアプリケーションからコードをカット アンド ペーストし、AppDelegate.h/m ファイルに配置することです。
@interface DBAppDelegate : UIResponder <UIApplicationDelegate>
@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;
@end
と私の .m ファイル:
@implementation DBAppDelegate
@synthesize managedObjectContext = _managedObjectContext;
@synthesize managedObjectModel = _managedObjectModel;
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
//the line below is what is causing an error
DBViewController *controller = (DBViewController *)navigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;
return YES;
}
私の .m ファイル内には、投稿していない以前のアプリケーションにもあった Core Data のボイラー プレート コードも含めました。私の新しいアプリケーションでは、このレイヤーにアクセスするためのシングルトン インスタンスも提供するアクセス レイヤーを作成しました。このクラスで CRUD 操作を行い、.h ファイルで次のプロパティを宣言しました。
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@property (nonatomic, strong) NSFetchedResultsController *fetchedResultsController;
現時点では、次のエラーが発生しています。
「タイプ「DBViewController」のオブジェクトにプロパティ「managedObjectContext」が見つかりません。私がしたいことは、Singleton インスタンスの作成を可能にするメソッド内で managedObjectContext を初期化することです。
static DB *sharedSingleton = nil;
+ (DB *) sharedInstance {
if (sharedSingleton == nil) {
sharedSingleton = [[super alloc] init];
}
return sharedSingleton;
}
私は何を間違っていますか?DBViewController で managedObjectContext オブジェクトを宣言していないことに気付きましたが、この行の代わりに何を入れればよいでしょうか? 私のSingletonクラスに関しては何かあると思いますが、正直なところ、ここには手がかりがありません。