Xcode 4、コアデータモデルバージョン-現在のバージョンの設定


183

Xcode 4で次の関数を実行して、バージョン付きモデルの作成後に使用するモデルを設定する方法について、混乱しています。

設計>データモデル>現在のバージョンの設定


15
私はそれを再参照する必要があるたびにこれに投票したいと思います。
erik

回答:


329
  1. 最上位の.xcdatamodelIdファイル(その下に多数のバージョンの.xcdatamodelが子として存在するファイル)をクリックします。
  2. ユーティリティのサイドペインが表示されていることを確認します(表示されていない場合は、ウィンドウの右上にある3番目の[表示]ボタンをクリックします)。
  3. [ユーティリティ]サイドペインで、ファイルインスペクタ(左上の小さな紙のアイコン)を選択します。
  4. 「バージョン付きコアデータモデル」がグループとして表示されるので、「現在」ドロップダウンを新しいバージョンに変更します。

2
素晴らしいです、ありがとう!また、同じペインが[表示]> [ユーティリティ]> [ファイルインスペクタ]の下にあります
Nate Potter

Xcode 3と4の間の変更に慣れていることに感謝します。
Chris


15

Xcode 4では、*。xcdatamodeldファイルを選択したときに、ファイルインスペクターの[バージョン管理されたコアデータモデル-現在]セクションにデータモデルの1つのバージョンしか表示されない場合。または、Xcodeのプロジェクトナビゲーターのxcdatamodeldバンドルの外側に表示されている* .xcdatamodelファイルの2番目のバージョンがあります。以下をお読みください。

これを修正するには:

1) * .xcdatamodeldと* .xcdatamodelの両方の参照をプロジェクトナビゲーターで右クリックして[削除]をクリックし、Xcodeから削除します。

2) Xcodeからプロンプトが表示されたら、[ 参照のみを削除 ]をクリックします(非常に重要です)。

3)キャッシングが発生している場合に備えて、Xcodeを再起動して適切な対策を講じます。

4)両方の* .xcdatamodelファイルを含む単一の* .xcdatamodeldファイルを再度追加します。

これでXcodeは関係を認識し、プロジェクトナビゲーターで* .xcdatamodeldファイルを展開して、親xcdatamodeldバンドルの下に両方の* .xcdatamodelファイルを表示できるようになり、現在のモデルの横に緑色のチェックマークも表示されます。これにより、1つのバージョンだけを表示する代わりに、ファイルインスペクタでデータモデルの現在のバージョンを選択できるようになります。


そしてこうして頭をかきむしる。
Steve Madsen

誤って親xcdatamodelidをアプリケーションバンドルに変更しましたが、このソリューションが役立ちました!
morph85 2015

4

Xcode 4.2の場合

  1. YourModel.xcdatamodeldをクリックします。

  2. サイドペインを表示する

  3. 「バージョニングされたコアデータモデル」で、「現在のドロップダウンボックス」を選択し、データモデルを選択します。

これで、緑色のチェックマークが現在のデータモデルに移動します。


「オブジェクトライブラリ」には、「バージョニングされたコアデータモデル」のようなものはありません。最初の答え(Mac_Cain13から)は正しいですが、モデルがXcodeの.modeldの外にあるという奇妙なバグがあるようです。
StuFF mc

@StuFFmc-以下の私の投稿を確認して、Xcodeのプロジェクトナビゲーターのxcdatamodeldバンドルの外にあるxcdatamodelファイルの問題を修正してください。
Andrew

2

Xcodeのヘルプで「現在のバージョン」を検索すると、これを行う方法を説明するレシピ「管理オブジェクトモデルの現在のバージョンの設定」が表示されます...


1

少し外れたトピックですが、モデルの最初の新しいバージョンを作成する方法を知るためにこの質問に到達した場合(私が行ったように):xcdatamodelファイルをクリックします>>メニュー "エディター" >>モデルバージョンを追加します

これにより、モデルのバージョン管理が開始されます。



-1

CoraDataからセッターメソッドを使用することもでき
ます...このようなことをしてください...

あなたにCustomCoreDataManager.m

#import "ObjectiveRecord.h"

そして、このようにinitメソッドを呼び出します

- (instancetype)init {

    self = [super init];

    if (self) {           
        [[CoreDataManager sharedManager] setModelName:@"YourModelName"];
    }

    return self;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.