私のアプリはCloudKitを使用して、レルムデータをバックアップし、ユーザーが特定のボタンを押すたびにデータをフェッチします。 "default.realm"ファイルをドキュメントフォルダからiCloudに下のコードでアップロードするようにコーディングしました。 データがうまくアップロードされているようです。デフォルトのレルムをiCloudからダウンロードした別のレルムに置き換える方法
以下はダウンロード部分です。ダウンロードすることもできますが、レルムファイルが置き換えられないようです。
CKDatabase *privateDatabase = [[CKContainer defaultContainer] privateCloudDatabase];
CKRecordID *recordID = [[CKRecordID alloc] initWithRecordName:kRecordName];
// fetch realm from cloud
[privateDatabase fetchRecordWithID:recordID completionHandler:^(CKRecord *record, NSError *error) {
if (!error) {
CKAsset *realmAsset = record[@"Realm"];
NSData *realmData = [NSData dataWithContentsOfURL:realmAsset.fileURL];
NSString* filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString* fileName = @"default.realm";
NSString* fileAtPath = [filePath stringByAppendingPathComponent:fileName];
// delete existing default.realm file in documents
if ([[NSFileManager defaultManager] fileExistsAtPath:fileAtPath]) {
[[NSFileManager defaultManager] removeItemAtPath:fileAtPath error:&error];
}
// create a new default.realm file with downloaded data
if([[NSFileManager defaultManager] createFileAtPath:fileAtPath contents:realmData attributes:nil]) {
// code goes thru here but nothing changes
}
}
}];
レルムファイル全体を置き換えたいとします。私は間違って何をしていますか?どこから始めるべきですか? アドバイスをいただければ幸いです。
ガイドに従って、名前を変更せずに領域ファイルをスワップできます。それが持っていた強い参照のように見えます。そんなにありがとう、あなたは私の一日を救った! –