【XCode:エラーの読み方】exceptionPreprocess ってなんだろうって調べたら

### はじめに

iOS のシミュレーター上でどうやらこのようなException が吐き出されたらしい。
となった時

#### 動作確認環境

iOS12シミュレーター
Xcode11.3

これりゃなんだろう？？

~~~:Log

Failed to set (kerning) user defined inspected property on (UILabel): [<UILabel 0x############> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key kerning.

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndexedSubscript:]: index # beyond bounds for empty array'
*** First throw call stack:
(
	0   CoreFoundation                      0x################ __exceptionPreprocess + $$$
~~~

> あぁエラーだ〜〜

## 諦めようとなる前に、一度、検索してみましょう

いくつか検索ワードがありました。

これはなんだろう？

~~~:検索
 exceptionPreprocess
~~~

CoreFoundation で、ExceptionPreprocess が起こってるみたいだな。って考えてみる。

Preprocess の Exception ということなのでしょうね。

ここで一度落ち着く。

って調べてみる。

ざっくり調べてみると、、、

##### iOS9でアプリが起動直後にクラッシュする場合の回避方法
https://qiita.com/peromasamune/items/716de6da66dd31faeba8

にも出てるみたいですね。

これは、Exception は一緒だけどもその上のエラーメッセージが違うぞっていうのがわかる。
どうやら、XCode 側の処理でダメなことしてるっぽいって考えておく。

~~~:検索
this class is not key value coding-compliant for the key kerning.
~~~


##### swift初心者:「this class is not key value coding-compliant for the key」の対処方法
https://qiita.com/Atsushi_/items/f7930dd00a2c2ea464cd

どうやら

> 削除を試みた際に用意していたControllerのみ @IBOutlet や @IBAction 接続を削除してしまうと発生するらしいエラーとのことでした。必ずcontrollerのみでなく、Storyboardの Show the Connections inspecter上からも接続を解除するようにしましょう。

とのころだからどうやら表題のエラーとは別のものらしい。

とわかる。

じゃぁ答えはどこにあるんだろう？ということで、

~~~:errorLog
Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndexedSubscript:]: index # beyond bounds for empty array'
~~~

これが、問題のエラーが起きているところだった。

~~~
NSRangeException
~~~

Range の Exception が吐き出されているらしい。

どうやら「reason:」理由は、・・・に素直に書いている。ということで、NSArrayM のところに「＃」の値はempty array らしいというのがどうやらそう読めるっぽい。

可能性があるのは、これは経験則からすると、型がNSArrayで呼び出していて、NSMutableArray 出ない時によく出るっぽいので、この辺りを読み進めていくと


#### エラー文を読み進める

~~~:errorLog
	1   某file.dylib                     0x################ objc_exception_throw + ##
	2   CoreFoundation                   0x################ _CFThrowFormattedException + ###
	3   CoreFoundation                   0x################ -[__NSArrayM objectAtIndexedSubscript:] + ###
	4   プロジェクト名                       0x################ $%%%%%%%某ViewController某collection某cellForItemAt某UICollection某Cell某Foundation某IndexPath某 + #####
	5   プロジェクト名                       0x################ $%%%%%%%某ViewController某collection某cellForItemAt某UICollection某Cell某Foundation某IndexPath某 + ###
	6   UIKitCore                        0x################ -[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:isFocused:notify:] + ###
	7   UIKitCore                        0x################ -[UICollectionView _prefetchItemsForPrefetchingContext:maxItemsToPrefetch:] + ###
	8   UIKitCore                        0x################ -[UICollectionView layoutSubviews] + ###
	9   UIKitCore                        0x################ -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + ######
	10  QuartzCore                       0x################ -[CALayer layoutSublayers] + ###
	11  QuartzCore                       0x################ 某Layer16layout_if_neededEPNS_11TransactionE + ###
	12  QuartzCore                       0x################ 某Layer28layout_and_display_if_neededEPNS_11TransactionE + ##
	13  QuartzCore                       0x################ 某Context18commit_transactionEPNS_11TransactionEd + ###
	14  QuartzCore                       0x################ 某Transaction6commitEv + ###
	15  QuartzCore                       0x################ 某Display11DisplayLink14dispatch_itemsEyyy + ###
	16  QuartzCore                       0x################ 某display_timer_callbackP12__CFMachPortPvlS1_ + ###
	17  CoreFoundation                   0x################ __CFMachPortPerform + 157
	18  CoreFoundation                   0x################ __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + ##
	19  CoreFoundation                   0x################ __CFRunLoopDoSource1 + ###
	20  CoreFoundation                   0x################ __CFRunLoopRun + ####
	21  CoreFoundation                   0x################ CFRunLoopRunSpecific + ###
	22  Foundation                       0x################ -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + ###
	23  プロジェクト名                       0x################ $某クラス名某メソッド名や型など + ####
	24  プロジェクト名                       0x################ $某クラス名某メソッド名や型など + ####
	25  プロジェクト名                       0x################ $某クラス名某table某didSelectRowAty某_Foundation某IndexPath某 + ####
	26  プロジェクト名                       0x################ $某クラス名某table某didSelectRowAt某UITable某Foundation某IndexPath某 + ###
	27  UIKitCore                        0x################ -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:isCellMultiSelect:] + ###
	28  UIKitCore                        0x################ -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + ##
	29  UIKitCore                        0x################ -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + ###
	30  UIKitCore                        0x################ _runAfterCACommitDeferredBlocks + ###
	31  UIKitCore                        0x################ _cleanUpAfterCAFlushAndRunDeferredBlocks + ###
	32  UIKitCore                        0x################ _afterCACommitHandler + ##
	33  CoreFoundation                   0x################ __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + ##
	34  CoreFoundation                   0x################ __CFRunLoopDoObservers + ###
	35  CoreFoundation                   0x################ __CFRunLoopRun + ####
	36  CoreFoundation                   0x################ CFRunLoopRunSpecific + ###
	37  GraphicsServices                 0x################ GSEventRunModal + ##
	38  UIKitCore                        0x################ UIApplicationMain + ####
	39  プロジェクト名                       0x################ main + ##
	40  libdyld.dylib                    0x################ start + #
~~~

読み進めていると、プロジェクト名の値メソッド呼び出しているところで値を取り出しているところにnilが入ってるのかなというところがわかりました。

#### 具体的には自分の書き方にエラーがあるとみて自分のプロジェクト名の部分を探す

~~~:Log
	23  プロジェクト名                       0x################ $某クラス名某メソッド名や型など + ####
	24  プロジェクト名                       0x################ $某クラス名某メソッド名や型など + ####
	25  プロジェクト名                       0x################ $某クラス名某table某didSelectRowAty某_Foundation某IndexPath某 + ####
	26  プロジェクト名                       0x################ $某クラス名某table某didSelectRowAt某UITable某Foundation某IndexPath某 + ###
~~~

これはまた具体的なことだ！

#### エラー文からどこの部分でエラーになっているのか読み取る

クラス名とメソッド名と引数までもが実は連なっていることがわかりました！！！

Error メッセージは何気に具体的に教えていたりします。

### この部分はどうやら、行番号だったりしますしね？

# まとめ
XCode でのエラーが出た際は、このようにして、Error を読み進めると解決しやすいかもですよ。

またエラーが飛び出したらどういうエラーなのかをシェアしていきます。


ではまた！！！


## 関連記事

【About】(http://qiita.com/sunstripe) - サンストライプ

---

## 制作チーム：サンストライプ

[![sunstripe_logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80600/322f2d60-f19d-af9e-2b6f-7290ca546848.png)](http://sunstripe.main.jp/)
http://sunstripe.main.jp/

(月１WEBコンテンツをリリースして便利な世の中を作っていくぞ！！ボランティアプログラマー/デザイナー/イラストレーター/その他クリエイター声優募集中！!)

### 地域情報 THEメディア
THE メディア 地域活性化をテーマに様々なリリース情報も含め、記事をお届けしてます！！
https://the.themedia.jp/

### ゼロからはじめる演劇ワークショップ
多様化の時代に向けて他者理解を鍛える

https://workshop.themedia.jp/

### プログラミングワークショップ・ウェブ塾の開講！！！
様々なテーマでプログラミングに囚われずに取り組んでいきます。
詳しくはこちら　↓　↓　↓　↓　↓　↓　↓　↓
[プログラミングサロン 月１だけのプログラミング学習塾](https://workshop.themedia.jp/posts/7057553?fbclid=IwAR32CfRQ7RvDOhvuogoSwqxDLMOU7Jvuzljlnx-TMc27qBPX1BnWsfLcBR8
)

### 協力応援 / 支援者の集い
## チーム：サンストライプ
#### プログラミングラボ
https://twitter.com/sunstripe2011

一緒にポートフォリオを作りませんか？現場の体験やそれぞれの立場から年齢関係なく作品を作りたい方々と一緒にチームを作って、作品を作っています。現場に行きたい人には、職場紹介や職場の体験や悩み相談なども受けております。
様々な職種からプログラミングの知識を得たい、デザインの知識を得たい、データーベースの知識を得たいという人が集まっております。
週１のミーティングにそれぞれの近況と作業報告して、たまにリモート飲み会などをしております！！

興味がある方は、DMに話しかけてみてください。

## トラストヒューマン
http://trusthuman.co.jp/
私たちは何よりも信頼､人と考えてます｡

｢コンサルティング｣と｢クリエイティブ｣の両角度から｢人材戦略パートナー｣としてトータル的にサポートします！！

キャリア教育事業
広域学習支援プラットフォーム『のびのび日和』
https://slc-lab.amebaownd.com/

#スポンサー募集


## ネリム
https://nerim.co.jp/
配信事業などを映像コンテンツなどの制作しております

## ビヨンドXプロジェクト

[ビヨンドXプロジェクト全体会議](https://www.youtube.com/playlist?list=PLaR6-YWiGWkYhEHWnt8f1z-JC0g3nwwC9)