2016-05-10 8 views
0

私は現在、自分のデータベース用のマジックレコードと動的フレームワークを使用しています。しかし、私は過去2日間同じ問題に立ち往生してきました。私はエンティティの任意の並べ替えを作成するための組み込みのフレームワークを持って私の主なアプリを得ることができません。コンテキストが作成されますが、フェッチ要求を実行しようとすると、エンティティが見つかりません。共有コンテナーを使ってママファイルを共有しようとしましたが、セルフクラスでnsbundleを試し、バンドルIDをハードコーディングしてリソースのURLを取得しようとしました。ママファイルは、コピー元ファイルに含めたので、フレームワークに確実にコピーされています。いずれにせよ、それがうまく動いていたのは誰ですか?動的フレームワークからsqliteファイルを読む

は、次のことを試しました。(私たちはsqliteのファイルが必要だと思う)

NSURL *storeURL = [[NSBundle bundleWithIdentifier:@"bundleid"] URLForResource:@"model" withExtension:@"momd"]; 
[MagicalRecord setupCoreDataStackWithStoreAtURL:storeURL] 
+0

詳細が必要です。あなたは、単にアプリケーションからフレームワークにSQLファイルの名前を渡さないでください? – trojanfoe

+0

基本的には、私は主なアプリにモデルをコピーするときに動作するようになっています。それ以外の場合は開くことができません。 – user281300

+0

私はそれがなぜそのように見えません。ダイナミックライブラリは、アプリケーションと同じアドレス空間にあり、サンドボックスの権利などを共有しています。 – trojanfoe

答えて

0

あなたのコードで間違って何か、MagicalRecordを使用して

// this is data model, not Persistent Store URL 
NSURL *storeURL = [[NSBundle bundleWithIdentifier:@"bundleid"] URLForResource:@"model" withExtension:@"momd"]; 
[MagicalRecord setupCoreDataStackWithStoreAtURL:storeURL]; // expect persistent store url 

があり、初期化が

、本当に簡単です
// which will collect and merge all data models in the main bundle 
[MagicalRecord setupCoreDataStackWithStoreNamed:@"my.sqlite"] 

MagicalRecordInternal.mには、次のようなインスピレーションのコードがあります。

// *modelClass* can be any class in your dynamic framework 
+ (void) setDefaultModelFromClass:(Class)modelClass; 
{ 
    NSBundle *bundle = [NSBundle bundleForClass:modelClass]; 
    NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:[NSArray arrayWithObject:bundle]]; 
    [NSManagedObjectModel MR_setDefaultManagedObjectModel:model]; 
} 

詳細

あなたはcoreDataと "TMP" という名前の新しいスウィフトプロジェクトを作成する場合は、あなたがAppDelegate.swiftでこのようなものが表示されます。

lazy var managedObjectModel: NSManagedObjectModel = { 
    // The managed object model for the application. This property is not optional. It is a fatal error for the application not to be able to find and load its model. 
    let modelURL = NSBundle.mainBundle().URLForResource("tmp", withExtension: "momd")! 
    return NSManagedObjectModel(contentsOfURL: modelURL)! 
}() 

tmp.momdという名前のファイルはありません。 Xcodeで作成されたものはtmp.xcdatamodeldです。適切な方法はNSManagedObjectModel.mergedModelFromBundles(_:)であり、xx.momdという名前の適切なコンパイル済みデータモデルをすべて検索します。

+0

私は基本的にそれがうまく動いている他の動的なフレームワークから読んで仕事を得ることができません。 – user281300

+0

「else is it fine」と言ったらどういう意味ですか? @ user281300 –

+0

静的なlibの場合、私はモデルファイルを読むことができます。 – user281300

関連する問題