2011-09-09 48 views
6

我越來越瘋狂,我弄不明白。適用於iOS項目的XMLRPC-iOS

我已經下載並嘗試爲iOS構建XMLRPC。我與https://github.com/eczarny/xmlrpchttps://bitbucket.org/kdbdallas/xmlrpc-ios/wiki/Home 聯繫第一個,原來的,沒有iOS目標。第二個應該有,但即使這似乎並不奏效。

我建立XML-RPC-IOS lib中使用的XCode方式如下:

  • 下載,解壓縮,在Xcode開放
  • 進入菜單產品>存檔
  • 在組織我選擇 「共享」 的最新版本
  • 我將它保存在我自己的項目文件夾中。將其包含在項目中。

當我建立我自己的項目,我得到:

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)

這怎麼可能?所述XMLRPC-IOS設置被設置爲:

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

有人能爲我解釋如何在自己的應用程序中構建和使用XMLRPC-iOS庫嗎? 謝謝!

回答

10

它爲我工作;這正是我所做的。

  • 創建新項目(稱爲RpcTest)
  • 從到位桶下載分叉項目,提取在我RpcTest目錄中的zip,所以我的目錄如下:

directory structure

  • 將XMLRPC-iOS.xcodeproj拖拽到我的Xcode項目中(在Frameworks組下,但這並不重要)
  • 現在,到構建設置。在項目的Build Settings中添加kdbdallas-xmlrpc-ios-f28a13cc16ae用戶標題搜索路徑(取消選中遞歸)現在建項目(CMD + B)
  • 構建階段選項卡,展開目標相關,加XML-RPC-IOS項目,擴大鏈接二進制與圖書館,添加libXMLRPC_iOS.a。現在 enter image description here

你應該能夠包括任何xmlrpc的頭和用lib。

希望有所幫助。

編輯 Download via Dropbox. 被告知:未完全執行,只是一個演示是XMLRPC的作品! ;)

+0

真棒,非常好的完美。我一定會試一試。你能把它發給我嗎?保羅 - 保羅·佩倫 - 多 - com。謝謝! –

+0

當然可以。我會把它上傳到原來的地方,並在原來的答案中發佈鏈接,它只是幫助其他人有相同的問題。 – mja

+0

@mja感謝您發佈答案和代碼。它確實有幫助。我只想問,https://github.com/eczarny/xmlrpc項目有三個目標。你能否幫助你如何分別提取ios版本(目標)。 – Gypsa

0

我已經使用了第一個提到了https://github.com/eczarny/xmlrpc的iPhone項目。
應該工作。 (前一段時間)

[編輯]
更多的細節: 我進口XMLRPCResponse和XMLRPCEventBasedParser(+所有相關的類,讓他們從該項目的工作)。

然後,下面就來解析響應代碼(我是做手工的要求):

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]; 

乾杯 萊昂內爾。

+0

謝謝你回答lionel,然而可悲的是它根本沒有幫助我。如果你能解釋你是如何爲你的項目工作的,那將是非常棒的。 –

+0

我檢查了我的舊項目,這裏是我可以提取的;) – yonel

0

我可以知道你設定了什麼目標嗎?例如三個目標可用,如果您使用iOS,請選擇libXMLRPC,然後構建,然後從構建中選擇libXMLRPC.a文件,然後將其鏈接到我們的項目。那麼它會運行。