ほぼ確実に、再利用識別子"title"
は正しくありません。
のUITableView.h
メソッドシグネチャから、dequeueReusableCellWithIdentifier
戻り値の型が暗黙的にアンラップされたオプションであることがわかります。
func dequeueReusableCellWithIdentifier(identifier: String!) -> AnyObject! // Used by the delegate to acquire an already allocated cell, in lieu of allocating a new one.
それは次の後の感嘆符によって決定されAnyObject
ます:
AnyObject!
それで、最初に考慮すべきことは、「暗黙的にアンラップされたオプション」とは何ですか?
Swiftプログラミング言語は次のように語っています。
プログラムの構造から、値が最初に設定された後、オプションには常に値があることが明らかな場合があります。このような場合、オプションの値は常に値を持っていると安全に想定できるため、アクセスするたびにオプションの値をチェックしてアンラップする必要がなくなると便利です。
これらの種類のオプションは、暗黙的にアンラップされたオプションとして定義されます。オプションにしたいタイプの後に疑問符(String?)ではなく感嘆符(String!)を配置することにより、暗黙的にアンラップされたオプションを記述します。
したがって、基本的には、ある時点ではゼロであった可能性がありますが、ある時点からは二度とゼロになることはありません。したがって、ラップされていない値として取り込むことで、面倒な作業を省くことができます。
この場合、dequeueReusableCellWithIdentifier
そのような値を返すことは理にかなっています。提供された識別子は、再利用のためにセルを登録するためにすでに使用されている必要があります。誤った識別子を指定すると、デキューはそれを見つけることができず、ランタイムは決して起こらないはずのnilを返します。これは致命的なエラーであり、アプリがクラッシュし、コンソールの出力は次のようになります。
fatal error: unexpectedly found nil while unwrapping an Optional value
結論:.storyboard、Xib、またはコードで指定されているセル再利用識別子を確認し、デキュー時に正しいことを確認します。