2012-04-25 13 views
2

私はノブで、書籍の例を私が使用できるアプリに変換しようとしています。sigabrt on filteredArrayUsingPredicate

サンプルアプリケーションは、連絡先アプリケーションの修正版であり、動作します。

さらに修正を加えましたが、検索が機能しなくなりました。それは次の行にsigabrtsします。

self.filteredAnswercards = [flattenedArray 
          filteredArrayUsingPredicate:predicate]; 

私は困惑しています。 私の頭は私のキーボードに対して叩いて血まみれです。

どのようなヘルプも大歓迎です。

ありがとうございました。

+0

より多くのコードを参照する必要があります。 –

+1

@ try/@ catchブロック内でクラッシュする行をラップし、例外のログと例外の 'callStackSymbols'メソッドの結果をキャッチの中に入れることをお勧めします。 –

+0

@PhillipMills omg、私はあなたが示唆したことをしました。そして、スタック・ダンプ全体の前に、このメッセージを受け取りました:Catchpoint 3(例外がスローされました).2012-04-25 19:52:02.267カタログ[3862:207] Answercard 0x68524c0> valueForUndefinedKey:]:このクラスはキーans_cards_titleのキーコードに準拠していません。うわー!それは素晴らしいです。それは、私がフィルタリングをしているフィールドなのでです。だから、一体何が意味するのでしょうか? – Piwacket

答えて

3

私の提案は、@ try/@ catchブロック内でクラッシュする行をラップし、catch内で例外と例外のcallStackSymbolsメソッドの結果を記録することでした。

4.xバージョンのXcodeの問題の一部は、例外がどこから来ているのかを伝えるのに、バージョン3.xよりもずっと悪いことです。このため、プログラムやデバッガにあなたが知る必要があることを伝えるトリックに慣れ親しむことは非常に重要です。

+0

Phillip、私は友人と冗談を言って、私が言語について知る必要があることは、通常、本の最初の32ページに終わることになります!しかし、それは本当に冗談ではありません。これは、新しい言語を学ぶための私のハックとしてのアプローチです。これを二重に困難にするのは、私が今までIDEを使用することを避けていたことです(textpadとviは私の選択ツールです)。私の石窟人のデバッグは私をここで助けてくれません。あなたの提案は素晴らしく、私の問題を発見して理解することができました...そして、このラッパーなしでxcodeで何も開発することはありません...それは自動的に生成されるべきです。 – Piwacket

+0

...申し訳ありません...解決策を投票するという評判はまだありませんが、私が自分の問題を解決するために働いたので、誰もがこの投票に投票してください。優れています! – Piwacket

0

もっとコードを見ることなく非常に難しいです。シガボットは、一般に例外がスローされたことを意味します。 objc_exception_throwにブレークポイントを設定すると、原因を明らかにするバックトレースを得ることができます。

上記の情報が新しくなくなった場合、コンピュータを完全に再起動すると役立つと言われた人もいますが、これを確認できる状況はありませんでした。

----コメントに基づいて編集-----

filteredAnswercardsがnilであるようにそれは間違いなくSIGABORTの原因となりますこと、聞こえます。その配列を適切に割り当てて、あなたは良いことをすべきです。

+0

どのように私はobjc_exception_throwにブレークポイントを置くのですか? – Piwacket

+0

ブレークポイントを追加する場所が見つかりましたが、例外ブレークポイントを追加することはできますが、objc_exception_throw自体を特定する方法はわかりません。私は例外的なブレークポイントを作りましたが、それは今そこで壊れていますが、私は見たいものや必要とする値にアクセスする場所を知りません。配列にはオブジェクトが埋め込まれていますが、受け取った配列は(null)です。これは動作するサンプルコードから唯一の違いがあるためです(実際のサンプルでは受信配列が空のもの、nullでないもの)。 – Piwacket

+0

私のRootViewController.hには次の2行があります。 NSArray * filteredAnswercards; および @property(保持、非構造)NSArray * filteredAnswercards; NSPredicate * predicate = [NSPredicate predicateWithFormat: @ "ans_cards_title beginswith [c]%@"、self.searchBar.text]; および self.filteredAnswercards = [flattenedArray filteredArrayUsingPredicate:predicate]; ログには述語があります。 ans_cards_title BEGINSWITH [c] "N" フラット化された配列にはオブジェクトが含まれています。 – Piwacket

0

predicateはありません。あなたはどこにそれを割り当てましたか?それとも決して割り当てられませんでしたか?

+0

述語はnullではありません: 'ans_cards_title BEGINSWITH [c]" n "'(一重引用符はもちろんありません)、両方のバージョンでより良い検査を受けると、受信配列は(null)前にログを読んでください。また、いずれのバージョンでも配列上で行われたallocは、どちらもRootViewController.hで次のように定義されています: 'NSArray * filteredAnswercards; 'と@property(保持、非構造)NSArray * filteredAnswercards; 'とし、RootViewController.mで次のように合成します。' @synthesize filteredAnswercards; ' 私は両方を検索しましたが、それは同じです – Piwacket

+1

ありがとうKen、私はエラーを見つけました(上記を参照してください!これは最高のウェブサイトです!皆大好き!!! – Piwacket