2016-05-04 3 views

答えて

1

現在、try/catchがあります。 NSErrorでこれを行う方法はありますか?

既存のメソッドを複製し、NSError **引数を追加しますNSPredicateに拡張子を追加することができます。これは、可変引数メソッドで、それでは、このメソッドの実装はちょうどtry/catchとなるメソッドにselfpredicateWithFormat:argumentArray:を呼び出す必要があるpredicateWithFormat:

@interface NSPredicate (WithError) 

+ (NSPredicate *) predicateWithFormat:(NSString *)format argumentArray:(nullable NSArray *)arguments error:(NSError **)error; 

@end 

の変異体のいずれかを使用しましょう、トリッキーが、不可能ではありません。 catch句では、errornilではない場合は、適切なNSError値を設定します(ご希望の場合はuserInfoディクショナリに元の例外を含めることができます)。*errorに割り当て、エラーを返す場合はnilを返します。例外が発生しない場合はNSPredicateの値を返します。

これで例外をスローしないで、エラー時にNSErrorの値を返すメソッドが追加されました。

HTH

+0

これは唯一の方法です。 – brainray

関連する問題