Xcode 7では、SwiftはオブジェクトをオブジェクトCコードではできません -- ios フィールド と objective-c フィールド と swift フィールド と autocomplete フィールド と xcode7 フィールド 関連 問題

In Xcode 7, Swift can't autocomplete Objective-C code












5
vote

問題

日本語

私はObjective-Cプロジェクトで働いていて、SWIFTを導入しようとしています。コードがコンパイルされるようにブリッジングヘッダーが機能していますが、オートコンプリートではObjective-Cクラスのどれもピックアップされていません。

私は試してみました:

  1. Xcode / Restartコンピュータの終了
  2. (〜ライブラリ/開発者/ Xcode / DerivedData)
  3. で派生データフォルダを削除する
  4. 〜/ library / caches / com.apple.dt.xcode
  5. でファイルを削除する
  6. シミュレータの種類の変更
  7. しかし、これらの提案は私のためにうまくいきませんでした。

    オートコンプリートは、UIKITなどに最適で、他のSWIFTコードのためにうまく機能します。それはオートコンプリートではないブリッジングヘッダーによって公開されているObjective-Cコードだけです。

    提案?

英語

I'm working in an Objective-C project and trying to introduce Swift. I've got bridging headers working so that the code compiles, however none of the Objective-C classes are being picked up by autocomplete.

I've tried:

  1. Quitting Xcode / Restarting Computer
  2. Deleting the DerivedData folder at (~/Library/Developer/Xcode/DerivedData)
  3. Removing the file at ~/Library/Caches/com.apple.dt.Xcode
  4. Changing Simulator type

However, these suggestions didn't work for me.

Autocomplete works fine for UIKit, etc., and for my other Swift code. It's only the Objective-C code exposed by the bridging header that will not autocomplete.

Any suggestions?

</div
              
         
         

回答リスト

5
 
vote
vote
ベストアンサー
 

私はこれを出し出したと思います:

プロジェクトには複数のターゲットがあり、ほとんどのファイルは複数のターゲットに属します。自動補完が必要な場合は、インポートしているヘッダーをブリッジングヘッダーにインポートする必要があります。

各ブリッジヘッダーに望んだヘッダーをインポートしたら、自動補完は予想通り作業を開始しました。

UPDATE:そのセットアップがプロジェクトのために機能する場合は、1つのブリッジングヘッダーに統合できるようです。それはあなたがインポートを追加したいと思ったたびに複数のヘッダーを更新することを妨げるでしょう。

 

I think I figured this one out:

Our project has multiple targets, and most of the files belong to multiple targets. If you want autocompletion, the header you are importing has to be imported in the bridging header for every target the file belongs to.

When I imported the header I wanted in each bridging header, autocompletion started working as expected.

Update: Seems like you can consolidate down to one bridging header if that setup works for your project. That would prevent you having to update multiple headers every time you wanted to add an import.

</div
 
 
2
 
vote

joel.dの答えのおかげで、私はプロジェクトで同じ問題を修正しました。

ブリッジヘッダではラインがありました:

<事前> <コード> #import "BTData.h"

Cocoa PodからのSDKであることに注意してください。最近、すべてのポッドが更新されましたので、自動補完の問題が始まった場合上記の行を以下のものに置き換えると問題を修正しました。これで、すべてのOBJ-CクラスはSWIFTファイルで自動補完しています。

<事前> <コード> #import <Braintree/BTData.h>
 

Thanks to joel.d answer, I've fixed the same problem in my project.

In bridging-header I had line:

#import "BTData.h" 

Please note that it was some sdk from cocoa pod, and recently we have updated all pods, so probably thats when autocompletion problems has started. Replacing above line with this one below fixed the issue and now all obj-c classes are autocompleting in swift files.

#import <Braintree/BTData.h> 
</div
 
 
1
 
vote

最近、大部分の大部分のOBJCプロジェクトでこの問題に進んでいます。うまくいけば、これは誰かを助けます。

私のためにオートコンプリートはこのプロジェクトで前に機能していましたが、その後、すべての目的Cクラス/メソッドで失敗し始めました。プロジェクトはまだ問題なくコンパイルされています。

ブリッジングヘッダーの既存のインポートをすべてコメントアウトし、自動完了のシンプルなテストクラスを追加しました。それから私が分離するまで他の輸入のそれぞれをコメントしていない。

例えば私のヘッダーは基本的にこのように見えました:

<事前> <コード> #import "MyClass.h" #import "MyOtherClass.h" #import "SomeThirdPartyModule.h" etc...

私はこれをしました:

<事前> <コード> #import "SimpleTestClassWithOneMethod.h" // #import "MyClass.h" // #import "MyOtherClass.h" // #import "SomeThirdPartyModule.h"

とオートコンプリートがSwiftから使用されたときにSimpleTestClassの作業を開始しました。

は、ブリッジングヘッダから他のクラスを取り除き始めた。問題を引き起こした輸入は一部の第三者フレームワークでした。

 

I recently ran into this issue with a large mostly-objc project. Hopefully this helps somebody.

For me autocomplete had been working before in this project but then began to fail for all objective c classes / methods. The project still compiled with no issues though.

I ended up commenting out all of the existing imports in the bridging header and adding a simple test class, for which auto complete worked. Then uncommenting each of the other imports until I isolated which one caused the problem.

For example my header basically looked like this:

#import "MyClass.h" #import "MyOtherClass.h" #import "SomeThirdPartyModule.h" etc... 

I did this:

#import "SimpleTestClassWithOneMethod.h" // #import "MyClass.h" // #import "MyOtherClass.h" // #import "SomeThirdPartyModule.h" 

And autocomplete started working for SimpleTestClass when used from Swift.

Then started uncommenting other classes from the bridging header until it worked. The import that caused the problem was some third party framework, not sure why it caused an issue but I just pulled out what I needed from that particular header for my swift code and imported it separately.

</div
 
 

関連する質問

5  RegisterForeRemoteNotifications()コールバックが呼び出されません  ( Registerforremotenotifications callbacks not being called ) 
この質問は尋ねられました(例: <ここ< / a>と )ソリューションは私の設定に適用されています。 iOS 9 / Xcode7(Beta 5)でアプリを開発しています。 明示的なアプリID /バンドル識別子を作成しました。 (アプリIDはXcodeによっ...

0  既存のXcodeプロジェクトにGITパッケージを追加します  ( Add git package to existing xcode project ) 
GITパッケージを使用しますか(この 1つ、他のものはおそらくその他であろう既存のOSXプロジェクトでも問題を引き起こしますか。これが初心者の質問であれば申し訳ありません。以前にソース管理を使用しないでください。 ...

38  NSInternAlInConsistencyException: '無効なパラメータが満たされていません:!ステイアップ|| CLClientSbackgoundable(内部 - > fclient) '  ( Nsinternalinconsistencyexception invalid parameter not satisfying stayup ) 
私はXcode 7ベータ版で私のアプリを作業しようとしていますが、この例外を打ちます: <事前> <コード> NSInternalInconsistencyException: 'Invalid parameter not satisfying: !stayU...

1  カルタゴとgit:ディレクトリの下に埋められたGitリポジトリのURL  ( Carthage and git url for git repository buried under directories ) 
私達は私達の会社のためにGithubの有料リポジトリを持っています。そして、私たちはすべてのライブラリーのgitリポジトリを持っています。 REPOディレクトリ構造は以下のようになります。また、これらのライブラリ(ライブラリ-1とライブラリ-2)プロジェクトは...

0  和解の限られた選択  ( Limited selection in uitableview ) 
サービスから動的データを取得するTableViewを持っています。私は複数の行制限を選択したいです..私はすべての可能な方法を試しましたが、それを得ることができません。以下のコードです。この問題を解決するために私を助けてください。事前にありがとう <事前> <...

2  Xcode 7のC ++プログラムで機能しないブレークポイント  ( Breakpoint not working in c program in xcode 7 ) 
これは私の非常に単純なプログラムです: <事前> <コード> void func(int a); int main() { int a = 0; func(a); // <-- bp return 0; } void func(i...

1  IBがダイナミックプロトタイプテーブルビューセルを不適切に表示するのはなぜですか  ( Why is ib improperly displaying my dynamic prototype table view cells ) 
Xcode 7.1にアップグレードした後、IBはテーブルビューセルを正しく表示されなくなりました。テーブルビューには、11個の動的プロトタイプセルが定義されています。スクリーンショット内のセルは、テーブルが上部まで(IB内)までスクロールされたときに部分的に...

38  XcodeBuild -exportArchive:exportOptionsplist forキー 'メソッド'のエラー:{}の期待値  ( Xcodebuild exportarchive exportoptionsplist error for key method expected o ) 
コマンドラインXcodeBuildツールを使用して、AD-HOC配布IPAファイルをこのようにアーカイブからエクスポートします。 <事前> <コード> xcodebuild -exportArchive -archivePath /path/Archive.x...

-1  Chownを呼び出すとXcode 7.1が失敗する  ( Xcode 7 1 fails when calling chown ) 
私はネットワーク(ドメイン)認証情報でログインしたMacBook ProでXcode 7.1を備えたヨセミテのIOSプロジェクトを構築しています。 <コード> ls -l の場合は、MyUserに属するファイルが表示されます.24252342423 Xcod...

0  xcodeはGIT / TFSを介した認証の問題ではありません  ( Xcode not authentication issue via git tfs ) 
Xcode 7はGIT / TFS認証情報を認証していません。 Xcode 7の以前のバージョンで働いていました。 ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有