IsEqualToString Combinations

I have several string combinations that I want my isEqualtoString to be automatically. Right now, I have all the combinations by hand.

if([aString isEqualToString:@"xyz"] || [aString isEqualToString:@"zxy"] || [aString isEqualToString:@"yzx"] || [aString isEqualToString:@"xzy"] etc...){}
+3
source share
2 answers

If you just need to know if any of them match, you can put all your candidates (xyz, zxy, ...) in NSArrayand call containsObject:aStringin an array. Use indexOfObject:aStringif you need to know which string was matched.

+4
source

You can write an NSString category that does the job:

@interface NSString (isEqualToAnyStringAddition)
- (BOOL)isEqualToAnyString:(NSString *)firstString, ... NS_REQUIRES_NIL_TERMINATION;
@end

@implementation NSString (isEqualToAnyStringAddition)

- (BOOL)isEqualToAnyString:(NSString *)firstString, ...
{
    if([self isEqualToString:firstString])
        return YES;


    va_list arguments;
    va_start(arguments, firstString);

    NSString *string;

    while((string = va_arg(arguments, NSString *)))
    {
        if([self isEqualToString:string])
        {
            va_end(arguments);
            return YES;
        }
    }

    va_end(arguments);
    return NO;
}

@end
+4
source

All Articles