2011-09-09 33 views
6

Me estoy volviendo loco, no puedo entenderlo.XMLRPC-iOS para el proyecto de iOS

He descargado e intento crear XMLRPC para iOS. I triend con https://github.com/eczarny/xmlrpc y https://bitbucket.org/kdbdallas/xmlrpc-ios/wiki/Home El primero, el original, no tiene un destino de iOS. el segundo debería tener, pero incluso ese parece no funcionar.

construyo XMLRPC-IOS lib utilizando XCode la siguiente manera:

  • descargar, descomprimir, abierta en Xcode
  • Ir al menú de productos> Archivo
  • En organizada elijo "Compartir" en el última compilación
  • Lo guardo en mi propia carpeta de proyecto. Incluirlo en el proyecto.

Cuando construyo mi propio proyecto me sale:

ld: warning: ignoring file /Users/paulp/Documents/ios/iPhone/ios-account/Account/external/XMLRPC/libXMLRPC_iOS.a, file was built for archive which is not the architecture being linked (i386) Undefined symbols for architecture i386:
"_OBJC_CLASS_$_XMLRPCRequest", referenced from: objc-class-ref in MyAPI.o
"_OBJC_CLASS_$_XMLRPCConnectionManager", referenced from: objc-class-ref in MyAPI.o ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)

¿Cómo es posible? Los ajustes XMLRPC-IOS se establecen en:

  • SDKROOT = iphoneos5.0
  • ARCHS = $ (ARCHS_STANDARD_32_BIT) = ARMv7
  • IPHONEOS_DEPLOYMENT_TARGET = 5.0
  • VALID_ARCHS = armv7k ARMv6 armv7f ARMv7
  • OTHER_CODE_SIGN_FLAGS = armv7k armv7f armv6 armv7
  • GCC_VERSION = com.apple.compilers.llvmgcc42

¿Alguien puede explicarme cómo puedo construir y usar la biblioteca XMLRPC-iOS en mi propia aplicación? Gracias!

Respuesta

10

funcionó para mí; aquí es exactamente lo que hice.

  • Crear nuevo proyecto (llamado RpcTest)
  • Descargar el proyecto en forma de horquilla de bitbucket, extrae la cremallera en mi directorio RpcTest, por lo que mi directorio es el siguiente:

directory structure

  • Arrastra XMLRPC-iOS.xcodeproj a mi proyecto de Xcode (en el grupo de marcos, pero esto no importa)
  • Ahora, a la configuración de construcción. Agregue kdbdallas-xmlrpc-ios-f28a13cc16ae en Rutas de búsqueda de encabezado de usuario (desmarque recursivo) en la configuración de compilación de su proyecto; ahora construir su proyecto (cmd + B)
  • ir a Fases Construir ficha, expanda Dependencias objetivo, añadir XMLRPC-IOS proyecto, ampliar Enlace binario con bibliotecas, añadir libXMLRPC_iOS.a. enter image description here

Ahora usted debería ser capaz de incluir cualquier encabezado xmlrpc y utilizar el lib.

Espero que ayude.

EDITAR Download via Dropbox. ser advertidos: aplicación incompleta, sólo una demostración de que las obras xmlrpc! ;)

+0

Impresionante, muy buena explicación. Voy a intentarlo. ¿Podrías enviarmela? Paul-en- Paul Peelen -dot- com. ¡Gracias! –

+0

Claro que puedo. Lo subiré a alguna parte y publicaré el enlace en la respuesta original, solo ayudará a otros a tener el mismo problema. – mja

+0

@mja gracias por publicar la respuesta y el código. Realmente ayuda. Solo quiero preguntarle que el proyecto https://github.com/eczarny/xmlrpc tiene tres objetivos. ¿Puede ayudarnos cómo ha extraído la versión de ios (objetivo) por separado? – Gypsa

0

He utilizado el primero que menciona https://github.com/eczarny/xmlrpc con éxito en un proyecto de iPhone.
Debería estar funcionando. (Fue hace algún tiempo)

[editar]
Algunos detalles más: Importé XMLRPCResponse y XMLRPCEventBasedParser (+ todas las clases relacionadas con ponerlos en funcionamiento del proyecto).

Entonces, aquí está el código para analizar una respuesta (que estaba haciendo la solicitud a mano):

NSURL* url = [NSURL URLWithString:@"http://www.xxxxxxxxx.fr/xmlrpc.php"]; 
NSMutableURLRequest* urlRequest = [NSMutableURLRequest requestWithURL:url]; 
[urlRequest setHTTPMethod:@"POST"]; 
[urlRequest addValue:@"text/xml" forHTTPHeaderField:@"Content-Type"]; 
NSString* param = [NSString stringWithFormat: @"<param><value><double>%f</double></value></param><param><value><double>%f</double></value></param><param><value><double>%.0f</double></value></param><param><value><int>1</int></value></param>", 
        request.coordinate.latitude, 
        request.coordinate.longitude, 
        request.radius/1000.0]; 
NSString* xmlrpcReq = [NSString stringWithFormat:@"<?xml version=\"1.0\"?><methodCall><methodName>geoSearch</methodName><params>%@</params></methodCall>", param]; 
[urlRequest setHTTPBody:[xmlrpcReq dataUsingEncoding:NSUTF8StringEncoding]]; 
NSURLResponse* response; 
NSError* error; 
NSData* content = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error]; 
XMLRPCResponse* rpcResponse = [[XMLRPCResponse alloc] initWithData:content]; 
if ([rpcResponse faultCode]==0) { 
    NSArray* result = (NSArray*)[rpcResponse object]; 

Saludos Lionel.

+0

Gracias por su respuesta Lionel, sin embargo, lamentablemente no me ayudó en absoluto. Sería increíble si pudieras explicar cómo lo hiciste para tu proyecto. –

+0

Revisé mi antiguo proyecto y esto es lo que pude extraer;) – yonel

0

¿Puedo saber qué objetivo está configurando? por ejemplo, tres objetivos disponibles, si utiliza para iOS, seleccione libXMLRPC y luego compilación, luego seleccione los archivos libXMLRPC.a de la compilación y luego vincule a nuestro proyecto. entonces correrá.

Cuestiones relacionadas