:データベースの最新バージョンでマッピングモデルが使用されていてもisConfiguration:compatibleWithStoreMetadataが返すのはなぜですか?私はコアデータの移行が必要かどうかを決定するために、以下の方法を使用してアプリに取り組んでいます
- (BOOL)isMigrationNeeded {
BOOL isMigrationNeeded = NO;
NSError *error;
NSDictionary *sourceMetadata = [self sourceMetadata:&error];
if (sourceMetadata != nil) {
NSManagedObjectModel *destinationModel = [self managedObjectModel];
isMigrationNeeded = ![destinationModel isConfiguration:nil
compatibleWithStoreMetadata:sourceMetadata];
}
return isMigrationNeeded;
}
を、属性がそのを設定するには、マッピングモデルを必要とする追加されました値。 isConfiguration:compatibleWithStoreMetadataがYESを返しても、属性の値は適切に設定されます。その結果、マッピングモデルを適用するコードは決して呼び出されません。
コアデータは何とか自動的にマッピングモデルを適用していますか?
データベースが最新バージョンから移行されている場合、これはすべて正常に動作します。しかし、私は古いバージョンのデータベースからの移行をテストしましたが、新しい属性の値を設定できませんでした。
私はチュートリアルで見つけた再帰的なコアデータ移行アプローチを試したかったのですが、isConfiguration:compatibleWithStoreMetadataがYESを返す場合は何もしません。
私は喜んで必要な追加情報を提供します。