0
我檢查的表達式是這樣的:處理故障表達
predicateExpression = [NSPredicate predicateWithFormat:jsonExpression];
但如果jsonExpression是錯誤的,我得到一個異常。什麼是處理這個最好的方法?目前有一個try/catch。有沒有辦法與NSError做到這一點?
我檢查的表達式是這樣的:處理故障表達
predicateExpression = [NSPredicate predicateWithFormat:jsonExpression];
但如果jsonExpression是錯誤的,我得到一個異常。什麼是處理這個最好的方法?目前有一個try/catch。有沒有辦法與NSError做到這一點?
目前有一個try/catch。有沒有辦法與NSError做到這一點?
您可以添加一個擴展到NSPredicate
其複製現有方法,並增加了一個NSError **
說法。這是棘手的,但不是不可能的,帶有可變參數的方法,所以我們使用的predicateWithFormat:
@interface NSPredicate (WithError)
+ (NSPredicate *) predicateWithFormat:(NSString *)format argumentArray:(nullable NSArray *)arguments error:(NSError **)error;
@end
變種這種方法的實現只需要調用底層方法上self
predicateWithFormat:argumentArray:
與try
/catch
之一。在catch
子句中,如果傳遞的error
不是nil
構造合適的NSError
值(如果您願意,可以在userInfo
字典中包含原始異常),將其分配給*error
,並返回nil
以指示失敗。如果沒有發生異常,則返回NSPredicate
值。
您現在使用的方法不會拋出異常並返回錯誤值NSError
。
HTH
謝謝,這似乎是唯一的辦法。 – brainray