, üzerinde kategoriler koymak için çok faydalı olduğunu ve düzenli olarak yapıyoruz. Örneğin, sisteminizin sık sık bazı JSON bloklarından gelen hataları gönderdiği söyleyin. Ben böyle bir kategori oluşturmak için çok uygun bulacağını: basitçe NSError
daha inşa istediğim şekilde userinfo inşa etmek
@interface NSError (MyErrors)
// Construct an NSError from data in JSON.
// Include full JSON response in the userInfo
+ (NSError *)myErrorWithJSON:(JSON *)json;
// Parse the text out of the user info
- (NSString *)myErrorMessage;
// The full JSON error block as a string
- (NSString *)myErrorJSON;
// BOOLs can be helpful sometimes, or you could return an enum for use in a switch.
- (BOOL)myIsNetworkError;
- (BOOL)myIsAuthError;
@end
Sık sık yazmak küçük yardımcıları ve çekme verileri geri UserInfo dışına arayanlar olmadan içsel temsilini bilmeye ihtiyaç duyuyor. Bunu çok iyi bir veri gizleme biçimi olarak görüyorum ve daha açıklayıcı mesajların kullanımını teşvik ediyor.
Benzer şekilde, daha küçük projeler için, sık sık bir
+myErrorWithCode:localizedDescription:
kategori yöntemini oluşturur. Alanımı biliyorum, bu yüzden genellikle bunu geçmem gerekiyor ve bu,
NSLocalizedDescription
anahtarını kullanıcı bilgisine ayarlamak için çok daha kolay. Yine, bu, daha kolay hatalar yaratmayı kolaylaştırır ve hata işleminizin uygulama ayrıntılarını değiştirmeyi kolaylaştırır.
"NSError", alana özgü değeri ne olursa olsun belirleyebileceğiniz bir etki alanı özelliği sağlama gereğini görmüyorum. Bir 'NSError' alt sınıfı ile eklemeyi ne kadar değer düşünüyorsunuz? – trojanfoe
Aynı şeyi düşünüyordum da. Ancak, hata hakkında daha fazla bilgi açığa çıkarmak gibi senaryolar söyleyelim. Bazı alana özel ayrıntılar olabilir. – uiroshan
Yine, "userInfo" sözlüğüne girdiler ekleyerek "NSError" tarafından kapsanmıştır. – trojanfoe