はじめに
まずは下記をご覧いただきたい。
おわかりいただけただろうか?
Storyboard の ViewController を cmd + C, cmd + V でコピペしようとしたところ Xcode がクラッシュしたのである![]()
現象
Xcode11 の Storyboard の ViewController をコピペしようとするとクラッシュする(Xcode11.0 11.2.1 で確認たまに View のコピペでも起きる...)
この現象はいつ起こるのか、なにが原因なのかは不明である。コピペできるときはできるし、できないときは何度やってもできない...
同一 Storyboard でのコピペ、別の Storyboard へのコピペ、別プロジェクトへのコピペいずれの場合も起こる![]()
対応
stack overflow に同じ悩みを持つ人がいた![]()
ここにいくつか対応策が書いてある。場合によってできるようになるみたいです。
cmd + D でコピペする
cmd + C, cmd + V ではなく cmd + D でコピペする。(はじめて知った...これでファイル複製できるらしい
)
私の場合はこれでできるようになりました。なぜか一度成功すると cmd + C, cmd + V でもコピペできるようになりました。
シミュレータを停止する
シミュレータを起動している場合シミュレータを停止させます。(これでなおった人もいるみたい)
DerivedData のファイルを削除する
ライブラリ/Developer/Xcode/DerivedData 内のファイルを削除する。(念の為ゴミ箱からも削除)
XML として開きコピペする
こちらは別の Storyboard にコピペするときに有効な手段です。
- コピーしたい ViewController の Storyboard を Open As -> Souce Code で開く。
2. 対象の ViewController の `` から `` をコピーする。
3. コピー先の Storyboard を Open As -> Souce Code で開く。
4. `` タグの中の適切な場所にコピーする。
これで別の Storyboard に ViewController がコピペできます。同一 Storyboard 内の場合は ObjectID が重複してしまうので使えません
(下記のようなアラートが出ます)
さいごに
Xcode のバグみたいですが上記のいずれかの方法でコピペできれば幸いです![]()
