RLMClearRealmCache
移行をテストするテスト間で Realm の状態をクリアするために使用しています。キャッシュがクリアされていない場合、レルム フィクスチャ ファイル (古いスキーマを持つ) を削除して置き換えても、キャッシュは引き続きスキーマが最新であることを報告するため、次のテストでは移行が実行されません。
RLMClearRealmCache
最近、Objective-C++ ファイルに移動されたので、その使用を停止し、プロジェクトでの Objective-C++ の使用を避けたいと考えています。これはまだ最善/唯一の方法ですか?
明確にするために、これらの仕様にはメモリ内 Realm を使用していません。特定のリリースのデバイスから保存したdefault.realm
フィクスチャ ファイルがあり、それを使用するために次のことを行っています。
- (void)loadBundledRealmWithName:(NSString *)name;
{
[self deleteOnDiskRealm];
// copy over the file to the location
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *source = [[NSBundle bundleForClass:[self class]] pathForResource:name ofType:@"realm"];
if (documentsDirectory && source) {
NSString *destination = [documentsDirectory stringByAppendingPathComponent:kDefaultRealmFileName];
[[NSFileManager defaultManager] copyItemAtPath:source toPath:destination error:nil];
}
}
ただし、テスト ケース間で を呼び出さないと、Realm のキャッシュは、ファイルをスワップ アウトして再度実行する必要があるRLMClearRealmCache
にもかかわらず、移行が既に実行されていると判断したように見えます。.realm