Как проверить, содержится ли строка в записи NSArray? - PullRequest
0 голосов
/ 11 ноября 2011

Предположим, у меня есть NSArray, который выглядит так:

(
    "zad0xsis|mac",
    "+zad0xsis",
    @someone,
    %another-one",
    ~admin,
)

Как я могу проверить, равна ли строка NSString некоторому значению в массиве (но всегда удаляются символы +, @, ~,% впереди)? Я хотя бы об использовании for петли, но не уверен, как

Ответы [ 3 ]

2 голосов
/ 11 ноября 2011

Другие приведенные методы очень хороши. Другой вариант - использовать блочные методы перечисления NSArray. Методы, основанные на блоках, позволяют вам использовать преимущества параллелизма на платформе, для которой вы разрабатываете, и на пути к будущему. Метод, о котором я думал, заключается в следующем:

  • (NSUInteger) indexOfObjectWithOptions: (NSEnumerationOptions) выбирает параметр passTest: (BOOL (^) (id obj, NSUInteger idx, BOOL * stop)) предикат

поэтому для вашей ситуации вы можете использовать следующее:

NSUInteger theIndex=NSNotFound;
theIndex=[theArray indexOfObjectWithOptions:NSEnumerationConcurrent passingTest:^(id obj, NSUInteger, idx, BOOL *stop){
     if ([obj rangeOfString: aString]!=NSNotFound]){
         *stop=YES;
         return YES;
     }
     return NO;
}];

решение также обсуждалось здесь: Как проверить, содержит ли NSString одну из строк NSString в NSArray?

Удачи

1 голос
/ 11 ноября 2011

Вы можете использовать rangeOfString, который является частью NSString Class.

BOOL exists = NO;
for (NSString *what in myArray)
{
    if ([someSearchString rangeOfString:what].location != NSNotFound) {
        exists = YES;
        break;
    }
}
0 голосов
/ 11 ноября 2011

Наконец использовал

for(int i=0; i<[self.userArray count]; i++) {
       NSString *user = [self.userArray objectAtIndex:i];
       NSLog(@"%@", user);
}

Что дало мне индекс, который я искал

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...