2011-10-18 17 views
8

Necesito RegexKitlite en mi aplicación como parte de la validación de cadenas. También han agregado libicucore.A.dylib. Actualmente trabajando con xcode 4.2, Base SDK iOS 5.0, compilador LLVM de Apple 3.0, architechture armv7. Adición de la carpeta regexkit a mi aplicación, provoca demasiados errores como automática de referencia errores de recuento, moldeada de Objective C-tipo de puntero 'NSString *' a C tipo de puntero 'CFStringRef' etcRegexKitLite en IOS5

Por favor, ayuda, donde he fué mal.

Respuesta

0

No está haciendo nada mal. Regexkit simplemente no se ha actualizado a iOS 5 todavía. El gran cambio en iOS 5 es que ya no hay retiros, lanzamientos ni autorreleases. Cada cosa de la memoria es automática como Java. (Excepto que ocurre en tiempo de compilación en lugar de tiempo de ejecución. Así que es conceptualmente como Java. Mayormente.)

De todos modos, en lugar de esperar a que Regexkit actualice puede usar NSRegularExpression. Usar material de Apple también es a prueba de futuro, ya que mantienen sus propias versiones actualizadas a la versión.

¡Buena suerte!

+0

no es como Java;) como ... no en todos los –

0

CBGraham tiene razón. Alternativamente, puede deshabilitar el recuento automático de referencias (Proyecto> Configuraciones de compilación> buscar 'recuento automático de referencias').

Es obvio que tendrá que hacer el recuento de referencias manual, pero RegexKitLite debe construir ahora ...

33

También puede desactivar la ARC para el RegexKitLite sólo mediante la adición de una bandera:

seleccione el proyecto -> TU Target -> en la pestaña "Build Fases" y abre el "Compile Sources" y agrega para "RegexKitLite.m" la bandera "-fno-objc-arc".

Actualización: Si se obtiene:

símbolos no definidos: "_uregex_reset", se hace referencia a partir de: _rkl_splitArray en RegexKitLite.o _rkl_replaceAll en RegexKitLite.o "_uregex_appendTail", hace referencia a: .... ...

Luego hay que añadir en la pestaña "Configuración de creación" -> "Enlace" -> "Otras banderas Linker" la "-licucore"

+0

funciona como un encanto ... En – emreoktem

+0

moderna veces, debe ir al Enlace Binario con Bibliotecas y agregar "libicucore.dylib" – seo

0

que sustituyen RegexKitLite con allí dos métodos.

Cuerda Resultados:

+(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 @""; 
    } 
} 

Arsenal de Resultados:

+(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; 
}