2018年4月20日金曜日

Outlet、Actionの接続ができない:Could not insert new outlet connection

問題

Outletが接続できなくなるエラーが発生。
Actionもダメみたい。


対処方法

以下のように自分で@IBOutletや@IBActionのコードを入力し、そこに対して接続すれば使える。

@IBOutlet weak var test: UIBarButtonItem!

根本的解決方法はあるのか?

ただし根本的な解決にはなっていないので、以下を試してみた。

プロダクトのClean

⌘+Shift+K

DerivedDataの削除

DerivedDataはプロダクトのビルドフォルダーにある中間ファイルで、 /ユーザ名/Library/Developer/Xcode/DerivedData/ にある。
Xcodeから ⌘+Option+Shift+K でその一部を削除できる。
よりちゃんと削除するにはDerivedDataフォルダ内の該当プロダクトのフォルダもしくは、DerivedDataフォルダごと削除してもいい。
プロダクトをXcodeで開けば再作成されるので問題はない。

Storyboardのリファレンス削除と再登録

Main.storyboardをRemove Referenceだけし、すぐにプロジェクトにドラッグで戻す
こちらのページ参照

接続先のファイルのリファレンス削除と再登録

たとえばViewController.swiftに接続できないなら、それを上記Storyboard同様にRemove Referenceだけしてまた戻す。
念のため、戻す前にXcode終了、DerivedDataを削除、Xcode再起動後にプロダクトcleanなどを行なった。

Xcode関係plistをいじる

/ユーザ名/Library/Preferences/com.apple.dt.Xcode.plist に対し、コマンドラインもしくはXcodeで開いて変更を加える。

その1

こちらのページ参照
plist中の IDEIndexDisable の値が1になってたら0に戻すというもの。
ユーザ名/Library/Cashces/com.apple.dt.Xcode と、 ユーザ名/Library/Saved Application State/com.apple.dt.Xcode.savedState の2ファイルをゴミ箱に捨てて「ゴミ箱を空にして」からじゃないと、値が元に戻ってしまいうまくいかなかったようだ。

その2

こちらのページ参照
その1に近いが、 com.apple.dt.Xcode を削除し、plistのDisable値を削除、Enable値を1に設定しているようだ。

ターミナルで以下3つを実行する。
rm -rf ~/Library/Caches/com.apple.dt.Xcode
defaults delete com.apple.dt.Xcode IDEIndexDisable  
defaults write com.apple.dt.Xcode IDEIndexEnable 1

しかしcom.apple.dt.Xcodeを削除した段階でIDEIndexDisableがすでにないらしく、
Domain (com.apple.dt.Xcode) not found.
Defaults have not been changed.
などと出たので、2番目はいらないのかも?

Target MembershipのチェックOFF/ON


ユーティリティエリアにあるTarget Membershipにアプリ名のところに✔が入ってるが、これをOFF → ONしてみる。
再度Index処理が開始される。

Xcodeの再インストール

Xcodeを削除し、AppStoreから再インストールしてみた。

XcodeとMacの再起動

そのまんま。

しかし、いずれをやってもダメだった。
人によってうまくいく場合、いかない場合があるようだ。
他のプロジェクトでは問題ないようなので、プロジェクトファイルのどこかが壊れちゃったんだろうね。

このままじゃ不便なので、今後も継続して調べる。わかったら追記する。

0 件のコメント:

コメントを投稿