2012-08-12 4 views
0
static NSRegularExpression *isRichContentRegex; 
static NSError *regexError = NULL; 

@implementation MkContentUtils 

+(void)initialize{ 
if(isRichContentRegex == nil) 
{ 
    isRichContentRegex = [isRichContentRegex initWithPattern:@"<(?!br|p)+[^>]*>"   options:NSRegularExpressionCaseInsensitive error:&regexError]; 
//  isRichContentRegex = [NSRegularExpression regularExpressionWithPattern:@"   (?!br|p)+[^>]*>" 
//                  options:NSRegularExpressionCaseInsensitive 
//                  error:NULL]; 
    NSLog(@"isrichcontent_pattern:%@",isRichContentRegex.pattern); 
} 

인쇄 로그는 다음과 같습니다 isrichcontent_pattern : (널) 왜 표현은 아직 전무하다 ??정적 NSRegularExpression 항상 전무

isRichContentRegex = [isRichContentRegex initWithPattern:@"<(?!br|p)+[^>]*>"   options:NSRegularExpressionCaseInsensitive error:&regexError]; 

변경 그것을 : 당신이 nil을 반환 보장 nilinit를 호출 할 수 있도록

+0

이 쉽고,이 때문에'<(?!br|p)+[^>] * >'정규 표현식이 유효하지 않으므로,'nil' 포인터를 돌려받습니다. 당신은 올바른 정규식을 만들어야하고 올바른 객체를 얻을 수 있습니다. – holex

+0

고마워요 @ 홀렉스 –

+0

<(?! /?)() ||> –

답변

3

당신이하는 NSRegularExpression 객체를 할당하지

isRichContentRegex = [[NSRegularExpression alloc] initWithPattern:@"<(?!br|p)+[^>]*>"   options:NSRegularExpressionCaseInsensitive error:&regexError]; 
+0

고마워요.하지만 여전히 그렇습니다. 나는 코드를 추가했다 "if (isRichContentRegex == nil) NSLog (@"still nil ");" , 그것은 "아직도 nill"을 인쇄했습니다. –

+0

귀하의 질문에 대한 의견보기 (@holex 제공) – MByD

+0

'<(?!br|p)+[^> * *'정규 표현식이 잘못 되었기 때문에'nil'입니다. 그래서 init 메소드를 대체하는 것이이 문제의 해결책이 아닙니다. : – holex