0

コア データも組み込む 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クラスに関しては何かあると思いますが、正直なところ、ここには手がかりがありません。

4

1 に答える 1