XcodeはCおよびObjective-Cコードのみをリファクタリングできます。Xcode 6でSwiftクラス名を変更するにはどうすればよいですか?


103

Xcode 6ベータ版で新しいシングルビューアプリケーションプロジェクトを作成しました。SwiftクラスViewController.swiftの名前を他の名前に変更したい。しかし、リファクタリング->名前の変更を選択すると、エラーが発生しますXcode can only refactor C and Objective-C code

ここに画像の説明を入力してください

Xcode 6でSwiftクラスの名前を変更する方法はありますか?

更新:

最後に、Xcode 9はSwiftのリファクタリングをサポートしています。Appleがこの基本的な機能を追加するには3年かかりました。リファクタリング


9
現在はありません。バグを報告します。
jtbandes 2014年

19
これが尋ねられてから1年以上経過しても、唯一の答えは依然として手動による検索と置換です。信じられないほどAppleの後方にある、これはIDEの基本的かつ不可欠な機能です
HughHughTeotl

1
AppCodeはこのリファクタリングを実行できます。これは、.swiftファイルで定義されたクラスの2段階のプロセスになります。1.クラス名を選択し、リファクタリング>名前の変更を実行します。2. .swiftファイルを選択し、リファクタリング>名前の変更を実行します。
Daniel Zhang

5
2年経っても!!! 実装されていませんか???
Milad Faridnia、2017

Cで100個のアイテムをコピーして貼り付けるときに、昔の記憶を取り戻す方法で実際に素晴らしい
LegendLength

回答:


25

Xcode6の右側にあるファイルインスペクターでクラスの名前を変更できます。

  • クラスを開く
  • ファイルインスペクター>識別と入力セクションに移動します
  • 「名前」フィールドで既存のクラスの名前を変更します。

それで全部です!以前は、クラスファイルのクラス名を手動で変更していました。


11
返信ありがとうございます。ただし、ファイル名のみがクラス名を変更します。それでも、コード内のあらゆる場所でクラス名のすべてのインスタンスを変更する必要があります。一方、Refactor-> Rename ...を使用すると、ファイル構造とコードの両方で名前を変更できます。
Khawar

問題ない!Appleがこの問題で何かをするまで、私はそれが一種の解決策だと思った。その日まで、検索と置換機能も使用できます。いずれの場合も、組み込みのRefactor-> Renameはほとんど同じアクションを実行します。
Newone 2014年

1
@Newone同じことはしません。たとえば、検索と置換は文字列内を検索しますが、Refactor-> Renameはそれを行うべきではありません。
Martin Epsz 2015

15

Project[検索]> [検索と置換]を使用してきましたが、完璧ではありませんが、機能します。


12

私はこのように使用します:

  • 名前を変更する変数にカーソルを置くことができます
  • エディターの選択-スコープ内のすべてを編集(^⌘E)
  • 変数の名前を変更すると、自動的にすべての変数の出現が編集されます

これは役立ちます。久しぶりにびっくりしました!! :]
hdsenevi

1
これはスコープ内でのみ機能します。つまり、ファイルIIRC全体では機能しません。
Steve Moser 2017年

10

このチュートリアルから。

iOS8 Swiftコードを分割する

まず最初に、View Controllerの名前をより意味のあるものに変更しましょう。ViewController.swiftファイルを開き、「ViewController」へのすべての参照を新しい名前「SearchResultsViewController」に置き換えます。ファイルの名前もSearchResultsViewController.swiftに変更します。

ここからアプリを実行しようとすると、クラッシュします。これは、ストーリーボードファイルが新しいクラスを認識するように更新されていないためです。Main.storyboardを開き、シーン内の「View Controller」オブジェクト(左側のナビゲーション)を選択し、次にIdentity Inspector(右側、3番目のボタン)を選択します。

ここから、クラスを「ViewController」から「SearchResultsViewController」に変更します。これで軌道に戻るはずです。プロジェクトがまだ機能していることを確認して、次に進みましょう。


返信ありがとうございます。この方法はすでに実験済みです。しかし、それは良い方法ではないようです。10個のクラスでViewController.swiftオブジェクトを使用している場合、すべてのクラスで手動で名前を変更する必要があります。とても痛くて時間の無駄:(
Khawar

@ Khawar-はい、そうですが、現在別のオプションがなく、Swiftもベータ版である可能性があります。それについて心配しないでください..アップルが次にもっと簡単な方法を見つけることを願ってください(目的c ???):)
iPatel

1
私はバージョン7.2(7C68)を使用していて、名前変更のリファクタリングはまだ不可能です
Barbara R

7.3ではそれも不可能です。
ManiaChamp 2016年


2

Xcode 9

Xcode 9がSwiftでの名前変更をサポートするようになりました。これはWWDC 2017で発表されました。

ここに画像の説明を入力してください


ありがとう、Appleに感謝しますが、名前の変更はまだ機能しません。現在、Xcodeがクラッシュしています。
kisileno 2017年

正しい...バージョン9.0ベータ版では、名前を変更するとXcodeがクラッシュします。しかし、これは将来的に機能するはずですが、そうなる可能性がある場合はいつでも:)
Guy Daher
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.