2016-03-24 72 views
0

Çalıştığım bir ağ uygulamasına sahibim. Yapmak istediğim, belirli IPv4 Adres Eki kümelerine sayı ekleyebilmek ve çıkartmak.NSString türünde bir IPAdresinin NSInteger için Dönüştürülmesi ve Kullanılması

Örnek. Cihazın mevcut IPAdresi: 10.43.223.71 olduğunu söyleyeyim ama 2. octet üzerine 40 eklemek istiyorum, bu da 10.83 yapar ve son sekizliye yeni bir dize .210 koydu. Yeni oluşturulmuş IPAdresi'ni yapma 10.83.223.210

Şimdi, IPAddress'i almak için NSString'i kullanabileceğimi biliyorum (Zaten sahip olduğum). Daha sonra NSMutableArray türünü NSString kullanabilir, ardından componentsSeperatedByString "i kullanabilirim." her sekizli ayrı ayırmak için. Bu bölümü zaten yaptım.

Bundan sonra ne yapmam gerektiği konusunda biraz tereddüt ettiğim yer burası. Şimdi NSString'den NSInteger'e bir dönüşüm başlatmalı mı? Her sekizliyi geçici olarak kaydederim ve/veya nasıl kaydedersem, böylece daha sonra belirli sekizleri yeniden ekleyebilirim.

cevap

0

Neden bir IPv4 sınıfı oluşturmuyorsunuz? Bu sınıf dahili olarak 4 tamsayı değerine sahip olacaktır. Bu sınıfın örneklerini, bir NSString (bir IP adresi olarak) ve 4 tam sayıdan oluşturabilirsiniz.

Bu sınıf, 4 sayıdan herhangi birini ayarlama/alma ve aynı zamanda dize temsili alma yöntemlerine sahip olmalıdır.

Tüm bu basit mantık kurallarına uygun olarak, küçük ve küçük bir sınıfta düzgün bir şekilde kapsüllenmiş halde, bunun kullanım kodunuz daha da basitleşir.

+0

Hızlı yanıtınızı gerçekten takdir ediyorum. Kodu basit ve temiz tutmak için özel bir sınıf oluşturmaya karşı değilim. Sanırım en büyük kaygım/soru, 2. sekizli ile ikinci sekizli eklenmesi gereken sayısal bir değerdir ... ama ülkeye bağımlı. Yani ABD'de +40, Kanada'da +100, vb. Olurdu. Son sekizli için, son sekizli bir uzak JSON dosyası tarafından sağlanacaktır. Zaten NSJSONSerialization yerleşik var ve bu şişer. Takılı olduğum 2.Octet'i manipüle ediyor. IPv4 sınıfını ve uygulamasını yapılandırma hakkında nasıl giderdiniz? –

+0

Bu "IPv4" sınıfının bu ayrıntılardan hiçbiri olmaz. Dizeyi basitçe dört tam sayıya böler ve 4 değerin her birini almanızı ve ayarlamanızı sağlayan yöntemleri kullanır. Bu kadar. Yani "10.43.223.71" gibi bir dizeyle bir örnek oluşturursunuz. Daha sonra 2. sekizliye 40 eklemek istiyorsanız, 2. değer için örnek isteyiniz (ve 43 olsun). Ona 40 eklersiniz. Ardından, ikinci sekizli için yeni değeri örneğe geçirirsiniz. – rmaddy

+0

Ne dediğini görüyorum! Bu harika bir fikir! Bu mantıklı ve oldukça basit ama zarif. Görüşlerinizi çok takdir ediyorum! –