1#import <EXNotifications/NSDictionary+EXNotificationsVerifyingClass.h> 2 3static NSString * const invalidValueExceptionName = @"Value of invalid class encountered"; 4static NSString * const invalidValueClassReasonFormat = @"Value under key `%@` is of class %@, while %@ was expected."; 5 6@implementation NSDictionary (EXNotificationsVerifyingClass) 7 8- (id)objectForKey:(id)aKey verifyingClass:(__unsafe_unretained Class)klass 9{ 10 id obj = [self objectForKey:aKey]; 11 if (!obj || [obj isKindOfClass:klass]) { 12 return obj; 13 } 14 15 NSString *reason = [NSString stringWithFormat:invalidValueClassReasonFormat, aKey, NSStringFromClass([obj class]), NSStringFromClass(klass)]; 16 @throw [NSException exceptionWithName:invalidValueExceptionName reason:reason userInfo:nil]; 17} 18 19@end 20