The following will create a single character set from the three:
NSCharacterSet *letterCharacterSet = [NSCharacterSet letterCharacterSet];
NSCharacterSet *decimalDigitCharacterSet = [NSCharacterSet decimalDigitCharacterSet];
NSCharacterSet *customPunctuationCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@"_-."];
NSMutableCharacterSet *validationCharacterSet = [letterCharacterSet mutableCopy];
[validationCharacterSet formUnionWithCharacterSet:decimalDigitCharacterSet];
[validationCharacterSet formUnionWithCharacterSet:customPunctuationCharacterSet];
If you want to use this character set in multiple places you should add it as a global to some appropriate class. Another option is to create a category on NSCharacterSet
and add it there.