Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。728件0TableViewのデータを削除しようとすると、何のエラーも表示せずにアプリが動かなくなります。下記のコードのどこがおかしいでしょうか?個人的にオプショナルに関する部分が怪しいかと思っているのですが、具体的にわかりません。どなたか不具合の原因が分かる方がいれば教えていただきたいです。すみませんが、よろしくお願いします。票2UITableViewからデータを削除する際には、データソースからの削除だけでなく行の削除自体も行う必要があります。UITableViewRowAnimation.Fade)が必要となります。個の銅バッジご回答ありがとうございます。ご指摘の通りコードを追加してみたのですが、アプリは動かないままでした。内において、データソースから最新のデータを参照するよう実装されていますか?もし一旦メンバ変数にデータを保持し参照するような設計になっていると、削除後のデータの数と行数に不一致が発生しアプリが止まってしまいます。|1あなたの質問に対する、直接の回答ではありません。提示コードの中に、気になる点があったので、それに対するアドバイスをしたいと思います。NSMutableArray()Swiftで、配列オブジェクトに、NS(Mutable)Arrayを使うのは、デメリットはあっても、メリットはないに等しいといえます。NS(Mutable)Arrayは、そのメンバーの型はAnyObject(Objective-Cでいえばid型)になります。元のオブジェクトがどのような型であっても、メンバーに代入するとき、AnyObjectに自動でアップキャストされます。メンバーからオブジェクトを取り出すとき、自動でダウンキャストはしてくれません。手動でダウンキャストしなければいけません。Swiftは型に厳密な言語なので、ダウンキャストに失敗したときの対処をしたプログラムをしないと、コンパイルできません。「ダウンキャストに失敗したときの対処」とは、具体的には、as?を使ってキャストし、ダウンキャストできなかったとき、nilを渡すという処理をするのが一般的です。メンバーから取り出したオブジェクトは、オプショナル型をとります。1.2より、as!というキャストが追加され、強制で非オプショナル型にすることができるようになりました。Stringと書き直せるはずです。Swiftでは、できる限りオプショナル型を使わずに、非オプショナル型の変数だけ使って、プログラムするというのが、ひとつのテクニックになります。配列オブジェクトは、SwiftのArray型を使い、メンバーの型を明示しておくことで、そのメンバーも、メンバから取り出すオブジェクトも、非オプショナル型として取り扱うことができます。[String]()nounData.addObjectsFromArray(dbhelper.outputWord("AAA"))nounData.extend(dbhelper.outputWord("AAA"))※DatabaseHelperクラスが、配列に関してどういう実装をしているかによって、この記述は変わってきます。wordData[indexPath])ごらんのように、記述するコード量が、はっきり少なくなるメリットもあります。個の銅バッジご回答ありがとうございます。NSMutableArrayを使うメリットはないに等しいのですね。NSMutableArrayを使おうとしたのには意図があり、nounDataの中身をremoveData()の中で書き換えたかったからで、Swiftの配列は参照型ではないと記事を見たので参照型のNSMutableArrayを使った次第でした。Swiftではなるべく非オプショナル型の変数を使ってプログラムするというのがテクニックなのですね。今後頭に入れてプログラミングしていこうと思います。}}に変更することでアプリが動かなくなることがなくなりました。変更箇所がわかりにくいのですが、removeDataの第三引数をindexPath.rowからindexPathに変更しました。UITableViewRowAnimation.Fade)のメソッドの第一引数がindexPath.rowではなくindexPathを取るからでした。ご回答くださった皆様ありがとうございました。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。