|
|
1.1 ! root 1: #import "KeyValueValidation.h" ! 2: ! 3: static NSDictionary *validateValuesInDictionary(id object, NSDictionary *values) ! 4: { ! 5: NSEnumerator *editEnum = [values keyEnumerator]; ! 6: NSMutableDictionary *errorDict = nil; ! 7: NSString *key; ! 8: ! 9: while (key = [editEnum nextObject]) { ! 10: // construct a selector and see if the have a validation method ! 11: id value = [values objectForKey:key]; ! 12: NSString *methodName = [NSString stringWithFormat:@"validate%@:", [key capitalizedString]]; ! 13: SEL selector = sel_getUid([methodName cString]); ! 14: NSString *errorMessage = nil; ! 15: ! 16: if (selector && [object respondsToSelector:selector]) { ! 17: errorMessage = [object perform:selector withObject:value]; ! 18: if (errorMessage) { ! 19: if (!errorDict) ! 20: errorDict = [NSMutableDictionary dictionary]; ! 21: [errorDict setObject:errorMessage forKey:key]; ! 22: } ! 23: } ! 24: } ! 25: return errorDict; ! 26: } ! 27: ! 28: @implementation NSObject (KeyValueValidation) ! 29: - (NSDictionary *)validateValuesInDictionary:(NSDictionary *)values ! 30: { ! 31: return validateValuesInDictionary(self, values); ! 32: } ! 33: @end ! 34:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.