2011-10-18 8 views
8

文字列の検証の一環として、私のアプリケーションにRegexKitliteが必要です。 libicucore.A.dylibも追加しました。 現在、xcode 4.2、Base sdk iOS 5.0、Apple LLVMコンパイラ3.0、architechture armv7で動作しています。私のアプリにregexkitフォルダを追加 は、 自動リファレンスカウントエラーのようにあまりにも多くのエラーが発生し、Cのポインタ型へのObjective-Cのポインタ型の キャスト「のNSString *」「CFStringRef」などIOS5のRegexKitLite

助けてください;ここで私が持っています間違った。

答えて

0

あなたは間違ったことはしていません。 RegexkitはまだiOS 5にアップデートされていません。 iOS 5の大きな変化は、もはや保持、リリース、またはオートリースがなくなったことです。すべてのメモリはJavaのように自動です。 (それは実行時ではなくコンパイル時に起こるので、概念的にはJavaに似ています)。

とにかく、Regexkitが更新されるのを待つのではなく、NSRegularExpressionを使うことができます。アップルのものを使うことは、彼ら自身のものをバージョンをアップデートしたままにしておくので、未来の証明でもあります。

幸運を祈る!

+0

それはJavaのようにされていません。)のような...ない魔法のようにすべての –

0

CBGrahamが正しいです。また、自動参照カウントを無効にすることもできます([プロジェクト]> [ビルド設定]> [自動参照カウント]を検索してください)。

あなただけのフラグを追加することによって、RegexKitLiteのためのARCを無効にすることができますあなたは明らかマニュアル参照カウントを行う必要がありますが、RegexKitLiteは今構築する必要があります...

33

は、プロジェクトを選択 - >あなたのTarget - > Tabで "Build Phases"を開き、 "Compile Sources"を開き、 "RegexKitLite.m"にフラグ "-fno-objc-arc"を追加します。

更新: あなたが取得する場合:

未定義のシンボル: "_uregex_reset" から参照:から参照RegexKitLite.o "_uregex_appendTail"、でRegexKitLite.o _rkl_replaceAllで _rkl_splitArrayを:.... >「リンク」 - - ...

その後、「設定のビルド」タブに追加する必要があり>「その他のリンカフラグ」「-licucore」を

+0

工場の...現代で – emreoktem

+0

ライブラリとバイナリをリンクし、 "libicucore.dylib"を追加する必要があります。 – seo

0

私はそこに二つの方法でRegexKitLiteを置き換えます。

文字列結果:結果の

+(NSString*) regExString: (NSString *) pattern withString: (NSString *) searchedString { 
    NSError *error = nil; 
    NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error]; 
    NSTextCheckingResult *match = [regex firstMatchInString:searchedString options:0 range: NSMakeRange(0, [searchedString length])]; 
    if ([searchedString substringWithRange:[match rangeAtIndex:1]]) { 
     return [searchedString substringWithRange:[match rangeAtIndex:1]]; 
    } else { 
     return @""; 
    } 
} 

アレイ:

+(NSArray *) regExArray:(NSString *) pattern withString: (NSString *) searchedString { 
    NSMutableArray *results = [[NSMutableArray alloc] init]; 
    NSError *error; 
    NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error]; 
    NSArray* matches = [regex matchesInString:searchedString options:0 range: NSMakeRange(0, searchedString.length)]; 

    for (NSTextCheckingResult* match in matches) { 
     NSMutableArray *result = [NSMutableArray array]; 
     NSRange matchRange = [match range]; 
     NSString *numString = [searchedString substringWithRange:matchRange]; 
     [result addObject:numString]; 

     for (int i=1;i < (int)match.numberOfRanges;i++) { 
      NSRange range = [match rangeAtIndex:i]; 
      @try { 
       NSString *numString = [searchedString substringWithRange:range]; 
       [result addObject:numString]; 
      } 
      @catch (NSException *exception) { 
       [result addObject:[NSNull null]]; 
      } 
     } 
     [results addObject:result]; 
    } 
    return results; 
}