Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。1,145件1collectionViewを使ったアプリを作っています。NSExceptionと表示されてしまい動きません。調べてみたところ接続の問題のようだったので、collectionViewのoutlet接続をし直したりしたのですが解決しませんでした。コードがどこか間違っているのでしょうか・・?教えていただけたら嬉しいです。票1セルの上で長押しをした時、タイトルに挙げられたメッセージ以外にもっと色々なメッセージがデバッグコンソールに表示されたのではありませんか?少し長くなりましたが、表題のエラーを解決してもまた次が、と言う状態なので、最後までじっくり読んでいただければと思います。あなたのコードを手元の実機で実行して、長押しするとこんなメッセージが表示されました。(ちなみにシミュレータでもほとんど同じメッセージが表示されました。NSException(lldb)この出力には大変重要な情報が含まれています。アプリがテスト中に異常終了した場合、原因になる操作をした時に出力されるメッセージには、すべて気を使ってチェックして下さい。ご自身で解決できずご質問を書かれる場合には、その全てのメッセージをご質問本文中に含めて下さい。今回は、目視でもすぐに怪しい部分があちこちに見つかる上に、必ず再現するエラーだったので、原因はすぐにわかりましたが、これらのメッセージがないと解決が困難になる場合も多いです。肝心なところは、ここです。instance認識不可能なセレクタがインスタンスに送られた。(クラスはアプリのViewControllerクラス、セレクタはcellLongPressed)つまり、あなたのViewControllerには(Objective-C的な視点で)cellLongPressedなんてメソッドがないぞ、と言うことで実行時エラーになっているわけです。これは「接続の問題」で発生することもありますが、そんなものは数多く考えられる原因のうちの一つでしかありません。うまく調べられるようにしましょう。まずいのはこの行です。太古の時代のSwiftコードを参考にするとXcodeがこんな書き方を勧めてくることもあるんですが、はいそうですかと鵜呑みにしないでください。そもそもそんな太古の時代のコードを参考にしないようにしましょう。UILongPressGestureRecognizer)と言うヘッダで宣言されるメソッドはObjective-C的には、cellLongPressedWithSender:と言うセレクタになります。最後のコロンもメソッド名の一部で必須です。こんな変換、Swiftから入られてObjective-Cの知識のない人間には普通はできないので、「Swift的メソッド名」を「Objective-C的セレクタ」に変換してくれる構文があります。さっきの1行を次のように書き換えて下さい。#selector(cellLongPressed))#selector(cellLongPressed)の部分は#selector(cellLongPressed(sender:))とか#selector(ViewController.cellLongPressed)とか#selector(self.cellLongPressed)とかいろんな書き方ができるんですが、target:にselfを指定する時には、self.は要りません。コンパイル時にエラーを表示してくれます。Itのサジェスチョンと一緒に表示されます。Objective-CここではXcodeのおすすめ修正に従って下さい。さっきのメソッドヘッダーの前に@objcが追加されます。UILongPressGestureRecognizer){しかし、あなたのコードにはまだおかしいところがあります。}あなたのコードではcollectionViewに対し、deleteItems(at:)を呼んで、「要素が削除されたよ」と伝えているのに、collectionView(_:numberOfItemsInSection:)は、ずーっと365を返しています。そこでiOSは、「削除したっつったのに、減ってねーじゃねーか!」と言う意味で、NSInternalInconsistencyExceptionなんて実行時エラーを報告してきます。[indexPath!])はコメントアウトしておく、なんてことが必要になるでしょう。nil)これが無いと、思った動作にならないなら、他の部分に何かうまく構成できていない部分があります。削除して、「他の部分」を修正したほうがいいでしょう。削除してもなんともなかったら、そのまま削除しておきましょう。0.6)は、現在のSwiftならこんな風に書き換えられます。0.6)文字数的には長くなりますが、drand()なんてよくわからないC言語用の関数を使う必要がなくなります。0.6)なんて書き方もできますが。)ただ、collectionView(_:cellForItemAt:)の中で毎回乱数を使っていると、スクロールした時や、セルを削除して再描画されるときなど、色がランダムに変わってしまいます。[]それをviewDidLoad()の中で初期化します。}するとcollectionView(_:numberOfItemsInSection:)をこんな風に書き換えられます。}と言う具合にすると、deleteItems(at:)とその他の部分のつじつまが合うようになるので、「長押しで削除」がうまくいくか確かめられるかと思います。個の銅バッジOOPerさん、こんばんは!今回もわかりやすい回答をどうもありがとうございます。試してみたところ無事に動作することができました。これを機に学習の仕方を見直さなければならないなと思いました。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。'(Double)'というエラーが出ます。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。