iOS 用のカスタム静的フレームワークを実装してきました。すべてがうまく機能していますが、フレームワークのコアデータを介してストア情報が必要であることに気付きました。以前のプロジェクトで magicrecord ライブラリを使用してきましたが、magicalrecord を独自のカスタム静的フレームワークに統合した経験がある人がいるかどうか疑問に思っていました。
フレームワーク コード内で setupcorestack メソッドを呼び出しても、何も起こりません。
iOS 用のカスタム静的フレームワークを実装してきました。すべてがうまく機能していますが、フレームワークのコアデータを介してストア情報が必要であることに気付きました。以前のプロジェクトで magicrecord ライブラリを使用してきましたが、magicalrecord を独自のカスタム静的フレームワークに統合した経験がある人がいるかどうか疑問に思っていました。
フレームワーク コード内で setupcorestack メソッドを呼び出しても、何も起こりません。
方法は次のとおりです。
// 1: Note that all setup is done within the AppDelegate of the project (not the framework)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 2: Locate your framework bundle
NSString *mainBundlePath = [[NSBundle mainBundle] resourcePath];
NSString *frameworkBundlePath = [mainBundlePath stringByAppendingPathComponent:@"Your-Framework-Bundle-Name.bundle"];
NSBundle *frameworkBundle = [NSBundle bundleWithPath:frameworkBundlePath];
// 3: Create an NSManagedObject Model by merging all models from the project and your framework. This simplifies saving as you can use a single persistent store coordinator to save a single managed object model.
NSArray *bundles = [NSArray arrayWithObjects:[NSBundle mainBundle], frameworkBundle, nil];
NSManagedObjectModel *models = [NSManagedObjectModel mergedModelFromBundles:bundles];
[MagicalRecord setShouldAutoCreateManagedObjectModel:NO];
[NSManagedObjectModel setDefaultManagedObjectModel:models];
[MagicalRecord setupCoreDataStackWithStoreNamed:@"Your-Store-Name.sqlite"];
// Project specific setup goes here...
return YES;
}
注: 複数の永続ストアと複数のデータベースを持つことは可能であるように思われますが、まだこれを試していないか、その必要がありました。ただし、ケースで複数の永続ストアが必要な場合は、次の SO 投稿も参照してください。
私はこのようにします:
NSManagedObjectModel *model = [NSManagedObjectModel MR_newModelNamed:@"MyModel.momd" inBundleNamed:@"myOtherResource.bundle"];
[NSManagedObjectModel MR_setDefaultManagedObjectModel:model];
//... continue to setup CoreDataStack after here