2016-03-24 12 views
0

Ich habe eine Netzwerkanwendung, an der ich arbeite. Was ich tun möchte, ist in der Lage, Zahlen zu bestimmten IPv4-Address Octets hinzuzufügen und zu subtrahieren.Konvertierung und Manipulation einer IP-Adresse des Typs NSString zu NSInteger

Beispiel. Sagen Sie, wenn die aktuelle IPAddress des Geräts ist: 10.43.223.71 Aber ich möchte 40 auf dem 2. Oktett hinzufügen, die es 10.83 machen und eine neue Zeichenfolge .210 auf das letzte Oktett setzen. Erstellen der neu erstellten IPAdresse 10.83.223.210

Jetzt weiß ich, dass ich NSString verwenden kann, um die IPAddress zu bekommen (die ich bereits habe). Ich kann dann NSMutableArray vom Typ NSString verwenden und dann die Komponenten SeparatedByString "." um jedes Oktett zu teilen. Diesen Teil habe ich schon gemacht.

Hier ist ich ein wenig verschwommen auf, was ich als nächstes tun soll. Soll nun eine Konvertierung von NSString in NSInteger initiiert werden? Sollte ich speichern/und wie würde ich jedes Oktett vorübergehend speichern, so dass ich später bestimmte Oktette wieder hinzufügen kann.

Antwort

0

Warum nicht eine IPv4 Klasse erstellen? Diese Klasse würde intern 4 ganzzahlige Werte haben. Sie können Instanzen dieser Klasse aus einer NSString (als IP-Adresse) sowie 4 ganzen Zahlen erstellen.

Diese Klasse sollte Methoden haben, um eine der 4 Zahlen zu setzen/abzurufen und die String-Darstellung zu erhalten.

Mit all dieser grundlegenden Logik ordnungsgemäß in einer netten kleinen Klasse gekapselt, wird Ihr Code für die Verwendung dieser viel einfacher.

+0

Ich schätze wirklich Ihre schnelle Antwort. Ich bin nicht dagegen, eine benutzerdefinierte Klasse zu erstellen, um den Code einfach und sauber zu halten. Ich denke, meine größte Sorge/Frage ist, dass mit dem 2. Oktett das 2. Oktett ein numerischer Wert ist, der hinzugefügt werden sollte ... aber es ist abhängig vom Land. Also würde USA +40 haben, Kanada würde +100 usw. haben. Für das letzte Oktett würde das letzte Oktett von einer entfernten JSON-Datei bereitgestellt werden. Ich habe bereits diese NSJSONSerialization eingebaut, und das funktioniert gut. Es manipuliert das zweite Oktett, auf dem ich feststecke. Wie würden Sie die IPv4-Klasse und Implementierung strukturieren? –

+0

Diese Klasse "IPv4" hätte keine dieser Details. Es würde einfach die Zeichenkette in vier Ganzzahlen aufteilen und Methoden haben, mit denen Sie jeden der 4 Werte erhalten und einstellen können. Das ist es. Sie erstellen also eine Instanz mit einer Zeichenfolge wie "10.43.223.71". Wenn Sie 40 zum 2. Oktett hinzufügen möchten, würden Sie die Instanz nach dem 2. Wert fragen (und 43 erhalten). Sie würden 40 hinzufügen. Dann würden Sie den neuen Wert für das 2. Oktett an die Instanz übergeben. – rmaddy

+0

Ich sehe was du sagst !! Das ist eine großartige Idee! Das macht Sinn und ist ziemlich einfach, aber elegant. Ich schätze Ihr Feedback sehr! –

Verwandte Themen