2009-06-21 4 views
0

新しい質問を開いて申し訳ありません。私はiPhoneから登録されていないユーザーとして他の質問を書いたので、iPhoneから書き込むのはあまり快適ではありませんでした。 ; [AuxSomething(BOOL)NSMutableArrayのwriteToURL:(NSStringの*)パスアトミック]iPhoneのような最高水準のシステムを作成する

を使用することが可能です:質問を言い換え

ファイル(NSMutableArray)XMLファイルをURLに送信し、そのファイルを含むURLを更新するにはどうすればよいですか?

たとえば、 私は配列を持っており、特定のURLにアップロードしたいと思います。次にアプリケーションが起動するときに、その配列をダウンロードしたいと思います。

NSMutableArray * arrayToWrite = [[NSMutableArray alloc] initWithObjects:@ "One"、@ "Two"、nil];

[arrayToWrite writeToURL:

[NSURL urlWithString:@ "mywebsite.atwebpages.com/myArray.plist"]アトミック:YES];

、実行時に:

NSMutableArrayの* arrayToRead =

[[NSMutableArrayののalloc] initWithContentsOfURL:[NSURL urlWithString: "mywebsite.atwebpages.com/myArray.plist"] @]。

意味では、私は、Webホスティングサービス
(例えばbatcave.net)上にあるURLにNSMutableArrayのを書きたい、URLはそれに応じて情報やアップデート、サーバサイドのファイルを受け取ります。 最高得点のような設定で、ユーザーはスコアを送信し、サーバーはファイルを更新し、他のユーザーは実行時に最高スコアをダウンロードします。

これが明確になることを希望します。

編集:私が探しているのは、Webサイト、つまりデータが送信されるURLを処理する方法を知っているので、PHPまたはASPのスクリプトです。 Webホスティングサービスでこれを行うことが可能であれば、このスクリプトを実装してデータを処理する方法の例やチュートリアルが必要です。

〜ありがとうございます。

+2

重複を作成しないでください(http://stackoverflow.com/questions/1022714/nsmutablearray-writetourl)。新しいユーザーであっても、このコンテンツを他の質問への回答として投稿したことは明らかです。 –

+0

(Whispers)重複した質問を投稿する場合は、少なくともあなたが言っているわけではありません。 –

答えて

2

が質問に答えるために、システムの複数の部分があります

あなたが(GUIDは、iPhone上で生成された各ユーザーのためのIDが必要
  • 、ユーザー名と一緒に十分なはずです)。
  • 次のようなサーバーが必要です。高得点を覚えています。ユーザーから高い評価を受けます。高得点を(ウェブサイト上に)表示するか、または高得点を電話にダウンロード可能にする。
  • 詐欺防止の手段が必要ですが、脱獄者との戦いに敗れている可能性があります。 iPhoneアプリ側で

、あなたのようなもので簡単に十分に行われている、表示のために現在の高得点をダウンロードできるようにしたいかもしれません:あなたは、それが同期しているので

int statusCode = 0; 
NSData* result = nil; 
NSHTTPURLResponse* response = nil; 
NSError* error = nil; 
NSString* url = @"http://www.yourserver.com/highscores.php"; // returns XML plist data 
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:180]; 
result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
// NSLog(@"NSURLConnection result %d %@ %@", [response statusCode], [request description], [error description]); 
statusCode = [response statusCode]; 
if ((statusCode == 0) || (!result && statusCode == 200)) { 
    statusCode = 500; 
} 

かもしれませんそれをNSOperationの中に入れたい。また、あなたはそれがとても小さいので、最も簡単な方法は、URLでそれをエンコードするだけで、ハイスコアのデータを送信するには

+ (NSURLConnection *)connectionWithRequest:(NSURLRequest *)request delegate:(id)delegate 

を使用することができます。

encodeParameterは、URLパラメータを符号化し、secureHashはUID、名前、スコアとあなたのiPhoneアプリとWebサイトに知られているいくつかの秘密の一つの方法安全なハッシュを表す文字列であるNSStringの上のカスタムカテゴリで
NSString* url = [NSString stringWithFormat:@"http://www.yourserver.com/sethighscores.php?uid=%@;name=%@;score=%d;antifraud=%@", [uid encodeParameter], [name encodeParameter], score, [secureHash encodeParameter]]; 

。これはすでに長くなっているので、あなた自身でこれらを把握するか、別の質問をする必要があります。

0

(少なくともiPhone OS 2.2.1のための)のNSData writeToURLドキュメントによれば、本のみのファイルであるので

」:// URLがサポートされ、この方法とWRITETOFILEの間に差がない。アトミック:,最初の引数の型を除いて。 "

NSArray/NSDictionary/NSStringのドキュメントには特に制限はありませんが、同じ制限が適用される可能性は高いようです。

他のメカニズムを使用してXMLをアップロードする必要があります。

アップロードをサポートするためにウェブサーバーに特定のコードを指定しない限り、ウェブサイトは一般に読み取り専用です。 「?私はシステムのようなハイスコアを作成するにはどうすればよい」

+0

それは私が興味を持っている、私はwriteToURLメソッドを使用して問題はないと思う、問題はスクリプトです、PHPやASPの場合、私はURLに送信されるデータを処理することができますいくつかのスクリプトの説明が必要です。 – natanavra

+0

まあ、writeToURLメソッドを使用すると、file:// URLでしか動作しないため、ウェブサイトにアクセスすることはありません(ウェブサイトをディスクとしてマウントできる程度を除いて)。 –

+0

ええと、それでは、ハイスコアのサーバーはどのように作成されますか?これは私が実際に探しているものなので詳細を教えてください。私はiPhoneからデータを受け取り、それに応じてWebページを更新し、他のiPhoneユーザーが(initWithContentsOfURL :)を使って情報をダウンロードできるようにします。 私の基本的な質問:ハイスコアのようなシステムを作成するにはどうすればいいですか? – natanavra

関連する問題