Проверьте, есть ли NSString hasPrefix, который содержится в NSArray

У меня есть этот оператор if, чтобы проверить, начинается ли URL с префикса:

NSString *baseUrl = @"http://example.com/";

NSString *currentURL = @"http://example.com/confirm";

if( [currentURL hasPrefix:[baseUrl stringByAppendingString:@"confirm"]] ){

    // True, so do something...

}

Я хотел бы изменить часть hasPrefix моего оператора if, чтобы он возвращал значение true, если currentUrl добавляется ЛЮБОЙ из значений в моем NSArray, показанных здесь:

NSArray *pages = [NSArray arrayWithObjects:@"confirm",@"products",nil];

Как я могу это сделать?

Ответ 1

просто перебирайте массив ваших страниц и устанавливайте булевский флаг, если существует какое-либо из терминов

//
//  customstring.m
//
//  Created by rbertsch8 on 8/2/13.
//
//

#import "customstring.h"

@implementation customstring

-(bool)hasPrefixArray:(NSArray*)array withbaseURL:(NSString*)baseUrl
{
    bool hasprefix = NO;
    for(int i = 0; i < [array count] || hasprefix == NO; i++)
    {
        hasprefix = [self hasPrefix:[baseUrl stringByAppendingString:[array objectAtIndex:i]]];
    }

    return hasprefix;
}

@end

Теперь в вашем коде выполните следующие действия:   // импортируем собственный файл строки   #import NSStringPrefix.h

NSStringPrefix *customURL = yoururl.com
NSString *baseUrl = baseurl.com
NSArray *yourarray = [[NSArray alloc] initWithObjects: @"one", @"two"]

if([customURL hasPrefixArray:yourarray withbaseURL:baseUrl])
{
    //dowork
}

UPDATE

Определите переменные в глобальном классе.

#define companyOrSiteName @"Company X"
#define baseUrl @"http://www.example.com/" // Set base URL for site.
#define customUrlScheme @"example://" // Set custom URL Scheme for app.
#define openInModal [NSArray arrayWithObjects: @"contact-us.php",@"products/",nil]
#define openInSafari [NSArray arrayWithObjects: @"about",@"products/resources/download",nil]
#define twitterHandle @"Example" // Twitter username without the "@" symbol
#define kTrackingId @"UA-4564564-3" // Set Google Analytics iOS App Tracking code.

Ответ 2

NSArray *parts = [currentUrl componentsSeparatedByString:@"/"];
NSString *name = [parts objectAtIndex:1];

После этого вы можете проверить, является ли имя строки элементом в массиве страниц.

Ответ 3

Для тех, кто хочет избежать синдрома кистевого туннеля:

NSString *baseUrl = @"http://example.com/";
NSString *currentURL = @"http://example.com/confirm";
NSArray *pages = [NSArray arrayWithObjects:@"confirm",@"products",nil];
BOOL hasSuffix = NO;
[pages enumerateObjectsUsingBlock:^(NSString* page, NSUInteger idx, BOOL *stop) {
  if([currentURL hasPrefix: baseUrl] && [currentURL hasSuffix: page]){
    hasSuffix = YES;
    stop = YES;
  }
}];

Ваше описание больше похоже на то, что вы ищете суффикс, так что он у вас есть.