2016-05-18 9 views
1

私は古いプロジェクトでiCloudを統合しようとしていますが、同時にMagicalRecordでデータベースを更新しようとしています。 iCloudはカスタム.sqliteファイル名を使用していないときに動作しますが、カスタム.sqliteでは使用できません。ここでは、私が意味することをより良く説明するコードがあります。アンサンブル:MagicalRecordとiCloud

// Load model. Don't use the standard 'merged model' of Magical Record, because that would include 
// the Ensembles model. Don't want to merge models. 
NSManagedObjectModel *model = [NSManagedObjectModel MR_newManagedObjectModelNamed:@"Polyglott.momd"]; 
[NSManagedObjectModel MR_setDefaultManagedObjectModel:model]; 

// Setup Core Data Stack 
[MagicalRecord setShouldAutoCreateManagedObjectModel:NO]; 

// This is the custom file name 
[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"PolyglottModel"]; 
// Here is the default one 
// [MagicalRecord setupAutoMigratingCoreDataStack]; 

// Setup Ensemble 

// Here, I'm not sure which one is the right way 
NSURL *url = [NSPersistentStore MR_urlForStoreName:@"PolyglottModel.sqlite"]; 
// NSURL *url = [NSPersistentStore MR_urlForStoreName:[MagicalRecord defaultStoreName]]; 

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Polyglott" withExtension:@"momd"]; 
self.cloudFileSystem = [[CDEICloudFileSystem alloc] initWithUbiquityContainerIdentifier:@"iCloud.de.thm.polyglott"]; 
self.ensemble = [[CDEPersistentStoreEnsemble alloc] initWithEnsembleIdentifier:@"PolyglottMR" 
                  persistentStoreURL:url 
                 managedObjectModelURL:modelURL 
                   cloudFileSystem:self.cloudFileSystem]; 
self.ensemble.delegate = self; 

// Listen for local saves, and trigger merges 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(localSaveOccurred:) name:CDEMonitoredManagedObjectContextDidSaveNotification object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(cloudDataDidDownload:) name:CDEICloudFileSystemDidDownloadFilesNotification object:nil]; 

[self syncWithCompletion:nil]; 

leechPersistentStoreWithCompletionもmergeWithCompletionは私にエラーを与えるが、私は、データベースを要求したときに、何のデータはありません。

アイデアや例はありますか?事前にありがとうございます。

答えて

0

EnsembleでMagicalRecordのサンプルコードを見てきたとします。

私は何が間違っているか正確にはわかりませんが、あなたはMR_urlForStoreName:に正しい名前を渡していないと推測しています。あなたはたぶん、その拡張子などを残しておくべきでしょう。ブレークポイントを設定し、URLが正しいかどうかを確認するために、URLを表示することで、見やすくなるはずです。

+0

あなたが正しいです、私はサンプルコードに従っていました。私は、.sqliteの有無にかかわらず、両方の名前を試しました。実際には、私はパスを確認して拡張子なしでそれを確認しています。とにかく、それはどちらも動作しません。 最後に、私はカスタムファイルからデフォルトのものにストアをコピーして、そこからデフォルトのものを使用することに決めました。それはややこしいが、速い解決策です。ありがとう! –

関連する問題