2013-07-18 17 views
17

まず、Flash Builder(IDE)/ AS3バックグラウンドから来ているObjective-CとXCodeに関する絶対的な初心者です。私は最近、Objective-Cの学習とXCodeの使用を開始しました。Xcodeのオートコンプリートが期待どおりに動作しない

私は最初のプログラムを書いていて、XCodeのオートコンプリート機能が期待通りに機能していないことに気付きました。それは私が使用しているクラスのタイプとは一見無関係なあらゆる種類の値を私に示しています。

私は宣言する場合:

NSFileManager *manager; 

私はここに manager = [NSFileManagerとタイプコマンド+スペースを入力した場合、私はdefaultManagerが候補の1つであることを期待しています。また、提案はNSFileManagerクラスのメソッドとプロパティでなければなりません。これが私がFlash Builderでどのように慣れたかです。

これはXCodeのバグですか、誤った設定か、XCodeが動作するはずなのですか? OSX CMD +スペースに

Autocomplete

+0

問題の再現に失敗しました。私のシステムでは、Xcodeはあなたが動作させたいと思うように振舞います: 'NSFileManager'クラスのメソッドだけを表示し、' defaultManager'を完了として最も高い確率で選択します。ところで、あなたはcommand + space( 'CMD + SPACE')をタイプしないで、' control + space'( 'CTRL + SPACE')とタイプします。 Macでは、これら2つのキーは異なるキーで、 'CMD + SPACE'はデフォルトでスポットライト検索を開始します。 – Mecki

+0

XCodeを再起動すると時々それを解決します –

答えて

1

通常、Xcodeで自動記入し、ファインダーを経由してSpotlight検索をしませ引き上げます。代わりにESCを押すとどうなりますか? ESCは、XCode内のデフォルトの自動塗りつぶしキーです。あなたのコードを使用して私の自動入力オプションのESCを押すと、私が得る最初のオプションはdefaultManagerです。

私はそれが助けてくれることを願っています!

EDIT:設定オープンXcodeで

テキスト編集]タブをクリックし、がチェックされ、完了提案を表示することを確認使用Escキーを作ります。

EDIT 2016:この回答は、XCode 4.xについて提供されています。 downvoteしたい場合は、それはもはや関連性がないと私はそれを削除するコメントを提供してください。ありがとう!

+0

私はESCを試しましたが、スクリーンショットと同じオプションが表示されます。おかげで助けても問題は他の場所にあると思います:s –

+0

'[NSFileManager'(スペースに気付く)と入力してESCをタップすると、最初の自動塗りつぶしとして 'defaultManager'が得られないと言っていますか? – Dan

+0

正しいですが、「Escキーを押して完了候補を表示する」オプションが設定にチェックされていますが、スペースを入力した後ESCを押すと、(int、long、main、manager、..)でポップアップが表示されます。私が(スペース)を入力してdを押してからESCを押しても、私は唯一の提案として「デフォルト」「ド」と「ダブル」を得ています。 –

2

Xcodeは可能な限り最善の方法で質問に答えています。

問題の一部はObjective-Cの「実行時に決定される」性質になっています。コンパイラは、可能な限りすべての可能性を提供しています。これはスーパークラス(通常はNSObjectまで)ですが、同じ名前空間内の、または同じ名前空間内の可能性のあるものです。 Objective-Cでは、他の多くの言語と同様に、コンパイル時には何も設定されていません。実行時まで多くのことが残されており、コンパイラは何が利用可能かを常に判断できるわけではありません。あなたがしていることを本当に知っていると信じているだけです。つまり、最終的に幅広いオプションが提示されることになります。

Xcodeの新しいバージョンでは、自動補完が改善されますが、まだ十分な改善の余地があります。しかし、使用したいメソッドの正確な名前(または最初の文字さえ)を覚えることができないときは、手間がかかります。これらの場合、私は単にドキュメントに戻ってしまいます。

基本的には、可能性を絞り込むまで入力を続けてください。コード内で構文エラーが発生する可能性もあります。エラー後のメソッドが突然自動的に表示されなくなります。

あなたの問題をもう一度見てみると、あなたのシステムではオートコンプリートがかなり壊れているように見えます。これは通常以上のものです。 XCodeのインデックス作成や何かが台無しになっている可能性があります。インスピレーションのためにいくつかの古い回答herehereを見てください。それは単に動作しようとしている設定に起因するとは考えにくいので、何かが壊れているか、構成内の何かが問題を混乱させています。

2

まずは、少しのヒント:FoundationCocoaを同じファイルにインポートする必要はありません。 Cocoaは「メタフレームワーク」です(Appleは「傘のフレームワーク」と呼んでいます)。それはそれ自体でフレームワークではなく、Cocoaをインポートすることは、FoundationAppKitCoreDataのインポートと同じです1つ、3つ取得)。

あなたの問題について:CocoaまたはFoundationをXcodeプロジェクトに追加していない可能性はありますか? XcodeはソースコードファイルとXcodeプロジェクトで参照されているフレームワーク内の補完のみを検索します。コンパイラは(常に選択されたSDKのSystem/Library/Frameworksディレクトリのフレームワークを検索するので)任意のフレームワークのヘッダをいつでもインポートできますが、Xcode自体はコード補完を実行するときにプロジェクトが直接参照するフレームワークのヘッダのみを検索します。 Foundationが参照されていない場合、Xcodeはオブジェクト宣言がNSFileManagerであることを認識しないため、実際にはNSFileManagerがObj-Cオブジェクトまたはそのメソッドを持っているかどうかはわかりません。ビルドプロセスのリンクフェーズにフレームワークを追加すると、Xcodeは自動的にフレームワークリファレンスをプロジェクトに追加します。あなたは実際にリンカエラーなしであなたのアプリケーションコードを構築できますか?

+0

はいプロジェクトをビルドして実行することができます –

+0

私はリンクされたライブラリにCocoaを追加しましたが、助けになりません。また、defaultMan to defaultManagerも完了しません。AppCodeで正常に動作します。私はそのプログラムを使用してコード化しています。 –

14

プロジェクトの途中でXcode 4を5にアップグレードし、サブグループで作成した新しいファイル(プロジェクトのサブフォルダと同じ)が自動完成せず、トップフォルダ内の新しいファイルがオートコンプリートされました。私はこれを次のように設定して修正しました:

Build Settings ==> Search Paths ==> Always Search User Paths to Yesすべてのファイルが自動完成しました。

+0

Xcodeをアップグレードすると、プロジェクトの派生データをすべて削除する必要があります。これには、ターゲットごとのインデックスが含まれます。 – geowar

+0

これは私のために働いてくれた。 –

8

前述したように、hereには多くの理由と解決策があります。

私のためにこの解決策を手助けしました: 環境設定>場所>派生データ> Finderで開くには、矢印をクリックしてください。 "Derived Data"という名前のフォルダを削除します。そしてすべてが再び働きます。

0

私は、プロジェクトのいくつかが作業中であることを発見しました。私は、この問題の解決策は、私の新しいプロジェクトが8.1であり、私は新しいバージョンのドキュメントをダウンロードしていないということでした。プロジェクトを8.0のビルドに戻したときに、完成しました。あなたが持っていないダウンロードを見るには環境設定とダウンロードに行きます。なぜそれがアップデートに含まれていないのか分かりません。

0

ときどき同じファイルが複数含まれていると、自動補完がうまくいきません。同じターゲット/プロジェクト(プロジェクトの重複したファイルを確認し、プロジェクト>ビルド段階>ソースのコンパイルもチェックして重複排除

0

これはなぜ起こったのかについて別の説明があります。私は最近、古いコードセットでこの問題を抱えていました。多くの人が示唆しているように私はDerivedDataを削除しようとしましたが、それは助けになりませんでした。プロパティ名が世界的にユニークであることを確認しました。また、プロジェクトのクリーニングとXcodeの再起動が役に立たないことも確認しました。私はXcode 6とXcode 7の両方で試しました。

最後に、私のXcodeプロジェクトでは、iOS 6との互換性が必要で、参照する必要のあるクラスのプロパティ変数.mファイルでは宣言されません。それらをヘッダーファイルに移動することによって、問題は解決されました。

古いバージョンのiOS SDKでは、ヘッダーに@property変数を宣言しなければなりませんでしたが、ヘッダーをきれいに保つために.mファイル(新しいプロジェクト)に入れていました。したがって、Xcodeはオートコンプリートでそれらを認識することを拒否しましたが、それはうまく構築されます。

これは誰かを助けることを望みます。それほど一般的ではないシナリオです。

0

まったく同じことが起きましたが、新しいプロジェクト、自動完成は機能しませんでした... Xcodeは10.10 SDKを選んで使用して、10.11に展開ターゲットを設定しました。それは、問題についてのツールバーに警告を示した。デプロイメントターゲットをコンパイラのデフォルトに設定すると問題が解決しました。

1

私の場合、グループ化のために実際のフォルダを使用していたため、オートコンプリートが機能しませんでした...喜んで喜んでいません。

のXcode 7.3(7D175)

1

プロジェクトが適切に索引付けされていないとき、この問題が発生する可能性があります。その後、削除するDerivedDataフォルダを行く

defaults write com.apple.dt.XCode IDEIndexDisable 0 

:> luanch ターミナルとタイプ - - >ユーティリティ

アプリケーション:開始、あなたは、インデックスが有効になっていることを確認するため

ファイル。

Finderを開きと〜/ライブラリ/開発/ Xcodeの/ DerivedDataと型に移動します。その後

rm -rfv * 

、クローズして再オープンXcodeは、製品に行く - >クリーンと待ちます

3

新しいXCodeバージョンにアップグレードした後、私は同じ問題を抱えていました。何らかの理由で、何を私のために働いたことは環境設定>テキストの編集>に行っていたことが再選択とデ選択それを入力した後、ながら、さまざまな補完を提案します。

これが役に立ちます。

+1

驚くべきことだが、XcodeはintelliJより5年遅れている – XcodeNOOB