JSON ファイルを解析してオブジェクト グラフを作成しています。JSON をデシリアライズしながら、ブロックを使用してオブジェクトを検証します。いずれかのオブジェクトで検証エラーが発生した場合は、ブロック処理を中断する必要があります。ステートメントのようbreak
に、ネストされたブロックから抜け出す方法はありますか?switch
iOS 5.0 で ARC を使用しています。私の問題を理解するのに役立つコードが必要な場合はお知らせください。
JSON ファイルを解析してオブジェクト グラフを作成しています。JSON をデシリアライズしながら、ブロックを使用してオブジェクトを検証します。いずれかのオブジェクトで検証エラーが発生した場合は、ブロック処理を中断する必要があります。ステートメントのようbreak
に、ネストされたブロックから抜け出す方法はありますか?switch
iOS 5.0 で ARC を使用しています。私の問題を理解するのに役立つコードが必要な場合はお知らせください。
これに対する解決策は、クラスに __block BOOL ivar を追加することです。これを「キャンセル」と呼びましょう。エラーが見つかったら、'cancel' を yes に設定します。すべてのブロック、すべてのループで、'cancel' が false の場合にのみ機能します。
このように、エラーが発生してキャンセルが設定されている場合、ブロックは「キャンセル」が設定されていることを検出するとすぐに終了します。
編集:私がこの ivar を書いたので、__block 修飾子は必要ありません (そして、それを必要としたことがないかもしれませんが、確かではありません)。ブロックが ivar を参照する場合、"self" ポインター、つまり self->ivar を介して参照します。