1

古いプロジェクトに iCloud を統合しようとしていますが、同時に MagicalRecord でデータベースを更新しようとしています。カスタム .sqlite ファイル名を使用していない場合、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 でもエラーが発生しますが、データベースを要求するとデータがありません。

アイデアや例はありますか?よろしくお願いします。

4

1 に答える 1

0

Ensembles の MagicalRecord サンプル コードを見たことがあると思います。

何が間違っているのか正確にはわかりませんが、に正しい名前を渡していないと推測しますMR_urlForStoreName:。おそらく、拡張機能などをオフにしておく必要があります。ブレークポイントを設定し、URL を印刷して正しいかどうかを確認すると、簡単に確認できるはずです。

于 2016-05-18T19:13:11.153 に答える