2011-01-22 4 views
1

このような質問には申し訳なく思っています。私は、データベースを介してiPhoneにデータを格納する方法の1つはSQLiteを使用していることを知っているが、しばらくの間、データベースがローカルであると思われ、各アプリケーションにデータベースのコピーがあるようだ。これは正しいですか?その場合、私は同じアプリを持つ2つのiPodを持っている場合はどうなりますか?そしてipod Aはデータベースを更新しようとしていますが、そのデータはipod Bに反映されていませんか?申し訳ありませんが、noobの質問SQLiteとiphone

+0

はい。あなたが正しいです。 'すべてのアプリにはリソースと資産のコピーがあります。あなたのiPod Aのデータベースは、あなたのiPod Bのデータベースとの関係を持つことはできません。ウェブサービスを使用する以外は – EmptyStack

+0

サーバーに集中データベースを持ち、それにiPhoneを接続する方法はありますか? – aherlambang

+0

はい。あなたはそのようにすることができます。アプリケーションがデータベース内のデータを更新するたびに、そのデータをサーバーに送信します。また、定期的にサーバーからデータベースを更新することもできます。 – EmptyStack

答えて

1

これは、アプリケーション間のデータを同期することができるサーバーを持つことによってこれを克服します。これは実際にはあなたが最初に考えるよりもはるかに大きな問題です。 sonatribe.comでは、ユーザーがインターネットに接続されていない状況を考慮する必要があります。そのため、ユーザーの操作をキューに入れて、デバイスが接続されているときにデータをサーバーにプッシュします。次に、どのデータベースが優先順位であるかを考慮する必要がありますか?競合が発生したときに、どちらが他方を書き込むか。

また、新しいイベントの新しいデータを定期的にリリースします。このデータは、アプリの起動時に同期されます。

私たちが学んだ教訓の1つは、コールの回数を減らすこと(接続が高価だという方が良いことです)でした。しかし、いったん接続するとデータの流れが速くなります。

FWIW - 私たちはMonoTouchを使いました。主な理由は、WCFと.NETのデータ機能(LINQ)との統合でした。 SIlverlightプロファイルとsvcutilを使用すると、複雑なオブジェクトを渡すWebサービスと接続して通信するのが簡単です。この種の作業には非常に便利です。

データ契約が限定されているユーザーも検討する必要があります。我々は設定でサーバーとの自動同期を無効にする機能を持っています。これは、ユーザーが音楽フェスティバルに実際に参加している場合にも便利です。英国では、1つのスペースに多くの人がいるため、このようなイベントでレセプションが悪いことで有名です。これは改善していますが、ユーザは、アプリを代わってサーバと通信するアプリケーションを停止できるという事実に感謝します。

+0

.NETを使用している場合、なぜWCFデータサービスを使用してRESTを使用しなかったのだろうか – aherlambang

+0

WCf for MonotouchのクライアントAPIは100%コンプリート。これを標準として設定することは、最も安定性が高く、オプションの複雑さがより低くなります。 AFAIK obv - 私は他の方法を聞くのが大好きです。これは昨年の夏に一番良かったものだった - 今年の夏私は多くのアプリを再コーディングしているので、もう一度見てみましょう:) – iwayneo

+0

また、Silverlightプロファイルとsvcutilを使って、タイプされたオブジェクトを返す生成されたプロキシを使用できます戻る - xml解析やその混乱:http://wiki.monotouch.net/HowTo/WebServices/Using_WCF – iwayneo

関連する問題