2016-03-24 11 views
0

私が取り組んでいるネットワークアプリケーションがあります。 私がしたいことは、特定のIPv4アドレスオクテットに数値を加算したり減算したりすることです。NSStringからNSIntegerへのIPAddressの変換と操作

例。デバイスの現在のIPAddressが:10.43.223.71 の場合は2番目のオクテットに40を追加して10.83にし、新しい文字列.210を最後のオクテットに追加したいとします。新しく構築されたIPAddressを作る10.83.223.210

今、NSStringを使ってIPAddressを取得することができます。 NSStringのNSMutableArrayを使用して、次にcomponentsSeperatedByStringを使用することができます。 "各オクテットを分割する。私がすでにやったこの部分。

これは、私が次にやるべきことについて少し曇っているところです。 NSStringからNSIntegerへの変換を開始する必要がありますか?私は/を保存し、後で特定のオクテットを後で再追加できるように、各オクテットを一時的にどのように保存するのですか?

答えて

0

IPv4クラスを作成しないのはなぜですか?このクラスは内部的に4つの整数値を持ちます。このクラスのインスタンスは、NSString(IPアドレスとして)と4つの整数から作成できます。

このクラスには、4つの数字のいずれかを設定/取得する方法と、文字列表現を取得する方法があります。

この基本的なロジックはすべて、素敵な小さなクラスに適切にカプセル化されているため、これを使用するためのコードははるかに簡単になります。

+0

本当にありがとうございます。私はコードをシンプルできれいに保つためにカスタムクラスを作成することに反対していません。私の最大の関心事/疑問は、2番目のオクテットでは、2番目のオクテットが数値でなければならないということですが、それは国によって異なります。したがって、米国では+40、カナダでは+100などがあります。 最後のオクテットについては、最後のオクテットはリモートJSONファイルによって提供されます。 NSJSONSerializationが既に組み込まれており、それがうまく機能しています。それは私が立ち往生している2番目のオクテットを操作しています。どのようにあなたはIPv4クラスと実装を構造化するつもりですか? –

+0

この「IPv4」クラスには、これらの詳細はありません。それは単に文字列を4つの整数に分割し、4つの値のそれぞれを取得して設定できるメソッドを持っています。それでおしまい。したがって、 "10.43.223.71"のような文字列でインスタンスを作成します。次に、2番目のオクテットに40を追加する場合は、インスタンスに2番目の値を要求します(43を取得します)。あなたはそれに40を追加します。次に、2番目のオクテットの新しい値をインスタンスに渡します。 – rmaddy

+0

私はあなたが言っていることを見る!それは素晴らしい考えです!それは理にかなっており、非常にシンプルでエレガントです。私はあなたのフィードバックを非常に感謝します! –

関連する問題