[解決済み] Fatal error: optional values のアンラップ時に予期せず nil が見つかった [duplicate] 。
質問
を使っていたのですが
UICollectionView
を使用していましたが、セルのラベルのテキストを変更しようとすると表示されます。
func collectionView(collectionView: UICollectionView!, numberOfItemsInSection section: Int) -> Int
{
return 5
}
func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell!
{
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("title", forIndexPath: indexPath) as TitleCollectionViewCell
// Next line: fatal error: unexpectedly found nil while unwrapping an Optional value
cell.labelTitle.text = "This is a title"
return cell
}
どなたかご存じないですか?
どのように解決するのですか?
ほぼ間違いなく、あなたの再利用識別子
"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!
では、まず最初に考えるべきことは、「暗黙のうちにアンラップされたオプション(Implicitly Unwraped Optional)」とは何か、ということです。
Swift プログラミング言語 は教えてくれる。
プログラムの構造から、オプショナルが最初に設定された後、常に値を持つことが明らかな場合があります。 常に値を持つことがプログラムの構造から明らかな場合があります。このような場合 にアクセスするたびにオプショナルの値を確認し、ラップを解除する必要性をなくすことが有用です。 というのも、このオプションは常に値を持つものと考えてよいからです。 を持つと安全に仮定できるからです。
このような種類のオプショナルは暗黙のうちにアンラップされるオプショナルとして定義されます。 オプショナルと定義されています。暗黙のうちにアンラップされたオプショナルを書くには、オプショナルの後ろにクエスチョンマーク(String? の後にクエスチョンマーク(String?)ではなく、感嘆符(String!)を置くことで記述します。 を付けることで記述します。
つまり、基本的には、ある時点でnilであったかもしれないものが、ある時点から再びnilになることはないのです。したがって、ラップされていない値としてそれを取ることによって、私たちはいくつかの手間を省くことができます。
この場合
dequeueReusableCellWithIdentifier
がそのような値を返すことは理にかなっています。与えられた識別子
は、再利用のためにセルを登録するために既に使用されていなければなりません。
不正な識別子を指定すると、デキューはそれを見つけることができず、ランタイムは決して発生しないはずのnilを返します。これは致命的なエラーで、アプリはクラッシュし、コンソールの出力には次のように表示されます。
fatal error: unexpectedly found nil while unwrapping an Optional value
結論: .storyboard、Xib、またはコードで指定されたセルの再利用識別子を確認し、キューを解除するときにそれが正しいことを確認します。
関連
-
[解決済み】「Fatal error: Unexpectedly found nil while unwrapping an Optional value "とはどういう意味ですか?
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] iOSのステータスバーの文字色を変更する方法
-
[解決済み] iOS7でスタイルUITableViewStyleGroupedを持つUITableViewの上部に余分なパディングがあるのはなぜですか?
-
[解決済み] UINavigationBarの1px下の行を非表示にする方法
-
[解決済み] コードサインエラーです。期限切れのプロファイルを削除した後、プロビジョニングプロファイルが見つからない
-
[解決済み] iPhone 5の画面解像度に対応したアプリを開発・移行するには?
-
[解決済み] iphoneアプリのベータテストはどのように行うのですか?
-
[解決済み] iOSで現在のデバイスの言語を取得するには?
-
[解決済み] コア・データ エンティティの全インスタンスを削除する最短の方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「Fatal error: Unexpectedly found nil while unwrapping an Optional value "とはどういう意味ですか?
-
iOSコンパイルポッドでエラー CocoaPods could not find compatible versions for pod "XXXXX" が報告される。
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] Objective-Cで文字列が空かどうかをテストするにはどうすればよいですか?
-
[解決済み] IBOutletsはARCのもとで強くなるべきか、弱くなるべきか?
-
[解決済み] iOS Simulatorでネットワークを無効にすることは可能ですか?
-
[解決済み] iOSとWatchKitで画像のtintColorを変更する方法
-
[解決済み] UIViewの角丸とドロップシャドウ?
-
[解決済み] NSNotificationCenterのaddObserver in Swift
-
[解決済み] UICollectionViewCellのアウトレットがnilであるのはなぜですか?