Xcodeで古い/未使用のデータモデルバージョンを削除する方法


163

Xcodeで古いデータモデルを削除するにはどうすればよいですか?オプションはメニューで無効になっています。(削除したいモデルはまだ公開されていません-暫定開発モデルです。)


「編集」メニューの「削除」の選択が無効になっているということですか(ファイルインスペクターで古いデータモデルファイルが選択されている間)?それとも別の意味ですか?
Michael Dautermann、2011年

はい、[編集]メニューとコントロールの右クリックメニュー(および私が見つけることができるすべてのメニュー)の下の削除の選択は無効になっています。以前のxcodeを使用して古いバージョンや未使用のバージョンを削除しようとしている人もいますが、インストールされていません。
SAHM、2011年

マイケル、xCode 4でこれを実行できますか?
SAHM、2011年

はい... XCode 4プロジェクトで「削除」メニューオプションが無効になっているのを見たことはありません。
Michael Dautermann、2011年

xcdatamodelについて具体的には?他の人はxcdatamodels XCode 4.を削除することで同じ問題を抱えていました。解決策が投稿されたのを見たことがありません。
SAHM、2011年

回答:


374

それはハックですが、これは私にとってはうまくいきました:

  1. Xcodeのモデルの現在のバージョンを、保持するバージョンに設定します
  2. プロジェクトから.xcdatamodeldを削除します(右クリック->削除-> 参照のみを削除
  3. Finderで.xcdatamodeldパッケージの内容を表示(右クリック->パッケージの内容を表示)
  4. 不要な.xcdatamodelファイルを削除します
  5. .xcdatamodeldファイルをプロジェクトに再度追加します

これにより、プロジェクトのメタデータファイルを手動で変更する必要がなくなります。


2
この手法を試しましたが、モデルバージョンの名前の付け方が原因で、モデルバージョンが不適切に再ソートされ、xcdatamodelファイルをプロジェクトに再度追加するときに間違ったデフォルトバージョンが選択されました。これは、最大38のモデルバージョンがあり、デフォルトのバージョン名を変更していないため、バージョンの名前が「MY_APP 37.xcdatamodel」になっている可能性があります。38を削除したいと思いました。インポート時に、字句順にプルされました。つまり、「MY_APP 10.xcdatamodel」が最初で、デフォルトとして選択されていました。私の場合は理想的ではありません。
Mike

1
マイク-同じ問題が私にはありましたが、大きなドラマをせずにテキストエディターでproject.pbxprojを並べ替えることができました。まだ理想的ではありません。
Ian Kershaw 2013

1
これはXcode 5.1.1では機能しません。以前は、多くの小さなモデル変更とモデルバージョン番号の増加により、軽量の自動移行が正しく機能していました。ただし、このアプローチを使用して無関係な「開発専用」モデルをすべて削除しようとすると、「エラー:移行用のマッピングモデルが見つからないか、自動的に推測できません」というエラーが表示されます。
Dalmazio 2014

1
6.4では、参照を削除するオプションはありません。削除されたばかりです。残りのステップは機能しているように見えました
noobsmcgoobs

1
これはXcode 10.2.1で機能するようです。私の移行はいくつかの属性名の変更だったので、大きなことは何もありませんでした。
ギャビン

35

私はこれを行う必要性を見つけました。新しいモデルバージョンを作成したところ、結局それが必要ないことに気付きました。Xcodeから(見つけることができた)削除する方法がないことに驚きました。それでも、それを削除するために私は次のことをしました:

最初に、それが現在のモデルバージョンではないことを確認しました。次に、Finderに行って、*。xcdatamodeldファイルを見つけました。右クリックして、パッケージの内容を表示します。そこに実際のモデルファイルがあり、削除できます。

これでもXcodeから削除されず、ファイルとグループで赤く表示されます。これが起こらないようにするには、Finderに戻り、メインの* .xcodeprojファイルにパッケージの内容を表示します(最初にこのバックアップがあることを確認してください)。そこで、project.pbxprojを開いて編集し、モデルバージョン名(私の場合は「間隔8」)を検索します。私にとっては、2つの別々の行に表示されました。これらの行を削除すると、Xcodeから完全に削除されます。


1
@Daniel_Wood、ええ、私も手動でそれを行う方法を見つけましたが、気を付けてください。それは将来的にいくつかの問題を引き起こす可能性があります...私はこれを数回やり直さなければならなかった、それは時々周りでアクティブと非アクティブのバージョンを切り替えることにもなり、それから正しいバージョンをリセットしてもそれはに移動しませんより多くの問題を引き起こすリストのトップ(時々)!しかし、入力してくれてありがとう。これは、彼らがこの機能を削除していたのは奇妙に思われます。.xcodeprojファイルにアクセスする必要はありません。
SAHM、2011年

2

これはXCode 10.3で私のために機能し、モデル全体を削除して再度追加するときに順序の問題が発生しませんでした。

  1. 削除するバージョン以外のモデルバージョンを選択します。
  2. XCodeから.xcdatamodeldファイルを右クリックし、[Finderに表示]を選択します。
  3. XCodeを閉じます。
  4. Finderで同じファイルを右クリックし、[パッケージの内容を表示]を選択します。
  5. 削除するモデルの名前を書き留め、Finderから削除します。
  6. 引き続きFinderで、プロジェクトファイル(.xcodeproj)に移動します。
  7. 右クリックして、Atomまたはその他のエディターで開きます。
  8. 「プロジェクト」ペインから、project.pbxprojファイルを開きます。
  9. 削除したモデル名を含むすべての行を削除します(例:「ABC 17.xcdatamodel」)。次のような2つの行があります。

    9D88880323C545B800A789B9 / * ABC 17.xcdatamodel * / = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; パス= " ABC 17.xcdatamodel "; sourceTree = ""; };

    9D88880323C545B800A789B9 / * ABC 17.xcdatamodel * /、

    3行目が見つかると、次のようになります。

    currentVersion = 9D88880323C545B800A789B9 / * ABC 17.xcdatamodel * /;

    つまり、現在選択されているモデルです。この行は削除しないでください。テキストを別のモデルバージョンに変更するだけです。

  10. XCodeを再度開きます。


-4

私の答えは特定の問題ではありませんが、迅速で機能します。gitを使用している人向け。ステージングされていない変更を破棄できます。

git stash save --keep-index

その後、必要にgit stash drop応じて、コマンドを使用してそのスタッシュをドロップできます。

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