2013-02-28 5 views
-1

У меня есть проект, который должен использовать регулярные выражения, поэтому я решил использовать RegexKitLite, я скачал его, добавил RegexKitLite.m в «Источники Compile», и RegexKitLite.h в разделы «Копировать файлы». Добавлено libicucore.A.dylib в проект Библиотеки. Импортные RegexKitLite.h в моем классе, и написать код (только для тестирования):RegexKitLite - IOS: непризнанный селектор

 NSString *str = @"testing string"; 
     if ([str isMatchedByRegex:@"[^a-zA-Z0-9]"]) 
     { 
      NSLog(@"Some message here"); 
     } 

После этого у меня есть сообщение об ошибке:

-[__NSCFString isMatchedByRegex:]: unrecognized selector sent to instance 0x1ed45ac0 
2013-02-28 19:46:20.732 TextProject[8467:907] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString isMatchedByRegex:]: unrecognized selector sent to instance 0x1ed45ac0' 

Что я пропустил? Пожалуйста, помогите мне ..

+0

ли у вас объявить заголовок файла: #import «RegexKitLite.h» в файле реализации? – tiguero

+0

Я импортировал «RegexKitLite.h» в класс заголовка – LightNight

+0

Это для Mac OS или iOS, потому что эта библиотека, по-видимому, доступна только для MacOS. Вы также пытаетесь импортировать динамическую библиотеку, которая не разрешена в iOS. – tiguero

ответ

1

После некоторого копания на самом деле нет API-интерфейса Cocoa для использования регулярных выражений до iOS4, поэтому программисты использовали внешние библиотеки, такие как RegexKitLite, которые действительно могут быть использованы для iOS.

Если вы находитесь на iOS4 или новее, не должно быть никаких причин не использовать NSRegularExpression. Описание класса можно найти here.

Например, с NSRegularExpression ваш фрагмент кода будет выглядеть следующим образом:

NSString *str = @"testing string"; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^a-zA-Z0-9]" options:NSRegularExpressionCaseInsensitive error:nil]; 
NSTextCheckingResult *match = [regex firstMatchInString:str options:0 range:NSMakeRange(0, [str length])]; 
NSRange range = [match rangeAtIndex:0]; 
if (range.location != NSNotFound) 
{ 
    NSString* matchingString = [str substringWithRange:range]; 
    NSLog(@"%@", matchingString); 
} 
Смежные вопросы