2011-09-09 38 views
6

私は狂気になっていますが、私はそれを理解できません。iOSプロジェクト用XMLRPC-iOS

iOS用のXMLRPCをダウンロードして作成しようとしています。私はhttps://github.com/eczarny/xmlrpcとお付き合いになりました。https://bitbucket.org/kdbdallas/xmlrpc-ios/wiki/Home 最初のものはiOSターゲットを持っていません。 2番目のものが必要ですが、それでも動作していないようです。

私は次のようにはXCodeを使用してlibにXMLRPC-のiOSを構築:、

  • ダウンロードを、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)

どのように可能ということでしょうか?

  • SDKROOT = iphoneos5.0
  • archsをは$(ARCHS_STANDARD_32_BITを)= =のARMv7
  • IPHONEOS_DEPLOYMENT_TARGET = 5.0
  • VALID_ARCHSのARMv7 armv7f = ARMv6のarmv7k:XML​​RPC-iOSの設定は次のように設定されています
  • OTHER_CODE_SIGN_FLAGS = armv7k ARMv6以降のARMv7 armv7f
  • GCC_VERSION = com.apple.compilers.llvmgcc42

私自身のアプリケーションでXMLRPC-iOSライブラリを構築して使用する方法を教えてもらえますか? ありがとう!

答えて

10

私のために働いた。ここで私は何をしたのですか?

  • ビットバケットからフォークプロジェクトをダウンロード(RpcTestと呼ばれる)新しいプロジェクト
  • を作成し、私のディレクトリは次のようになりますので、私のRpcTestディレクトリにzipファイルを抽出:

directory structure

  • XMLRPC-iOS.xcodeprojをXcodeプロジェクトにドラッグします(Frameworksグループの下にありますが、これは関係ありません)
  • さて、ビルドの設定に。 kdbdallas-xmlrpc-ios-f28a13cc16aeの下に追加します。プロジェクトのビルド設定でユーザヘッダー検索パス(再帰的チェックボックスをオフ)を追加します。今、あなたのプロジェクト(CMD + B)
  • libXMLRPC_iOS.aを追加し、リンクのバイナリを持つライブラリを拡張し、XMLRPC-IOSプロジェクトを追加し、ターゲットの依存関係を展開し、ビルドフェーズ]タブに移動しますビルドします。 enter image description here

今、あなたはどのXMLRPCヘッダを含めるとlibを使用することができるはずです。

希望に役立ちます。

EDIT Download via Dropbox. は助言する:不完全な実装、ちょうどデモXMLRPCの作品です! ;)

+0

素晴らしい、本当に良いexplenation。私は確かにそれを試してみましょう。それを私に送ってください。 Paul - at - Paul Peelen - ドットコム。ありがとう! –

+0

もちろんできます。私はそれをどこかにアップロードし、元の回答のリンクを投稿するだけで、同じ問題を抱える他の人を助けるだけです。 – mja

+0

@mja回答とコードを投稿していただきありがとうございます。それは本当に役立ちます。私は、https://github.com/eczarny/xmlrpcプロジェクトに3つの目標があることを尋ねたいだけです。別々にiOSバージョン(ターゲット)をどのように抽出したかを教えてください。 – Gypsa

0

iPhoneプロジェクトで成功したhttps://github.com/eczarny/xmlrpcと言った最初のものを使用しました。
動作しているはずです。

[EDIT]
いくつかの詳細は、(いくつかの時間前でした): 私は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

ライオネルにお答えいただきありがとうございますが、悲しいことに、それは私を助けませんでした。あなたのプロジェクトでどのように働いているのか説明できればすばらしいでしょう。 –

+0

私の古いプロジェクトをチェックして、ここに私が抽出できるものがあります;) – yonel

0

あなたが設定しているターゲットは分かりますか?たとえば、3つのターゲットがあります。iOSを使用している場合は、libXMLRPCを選択してビルドし、ビルドからlibXMLRPC.aファイルを選択し、プロジェクトにリンクしてください。実行されます。

関連する問題