2016-12-02 2 views
0

:データベースの最新バージョンでマッピングモデルが使用されていても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を返す場合は何もしません。

私は喜んで必要な追加情報を提供します。

答えて

0

isConfiguration:compatibleWithStoreMetadataが呼び出される前に、古いバージョンのモデルをモデルの新しいバージョンで上書きするバグがコード内にありました。

したがって、isConfig ...は正しく返されます。

My Bad !!!

関連する問題

 関連する問題