1

サーバーにリクエストを投稿するために、辞書にキーを使用していくつかの値を追加しようとしています。iOS7では問題はありませんが、iOS5で辞書を作成しているときに問題があり、null値が入力された場合、そのキーまたはそれ以降は辞書に挿入されません。これは私のコードのサンプルです

NSLog(@"name:%@, address:%@,city:%@, state:%@, country:%@, postal:%@ ,phone:%@,age:%@, gender:%@",self.pop.firstNameTextField.text,self.pop.addressTextField.text, self.pop.cityTextField.text,[NSNumber numberWithInt:stateId],[NSNumber numberWithInt:countryId],self.pop.postalCodeTextField.text,self.pop.phoneNumberTextField.text,self.pop.ageTextField.text,self.pop.genderTextField.text);


NSDictionary *details = [NSDictionary dictionaryWithObjectsAndKeys:
                          self.pop.firstNameTextField.text,@"name",
                          self.pop.addressTextField.text,@"address",
                          self.pop.cityTextField.text,@"city",
                          [NSNumber numberWithInt:stateId],@"state",
                          [NSNumber numberWithInt:countryId],@"country",
                          self.pop.postalCodeTextField.text,@"postalCode",
                          self.pop.phoneNumberTextField.text,@"phoneNo",
                          self.pop.ageTextField.text,@"age",
                          self.pop.genderTextField.text,@"gender",
                          nil];


NSLog(@"MyDetails:%@",details);

結果を iOS 7 に記録します。

name: GamerLegend,address:india,city:, state:1, country:1, postal: ,phone:, age:, gender:
MyDetails:
{
    address = India;
    age = "";
    city = "";
    country = 1;
    gender = "";
    name = "GamerLegend";
    phoneNo = "";
    postalCode = "";
    state = 1;
}

ios5 での同じログ結果:

name: GamerLegend,address:haripad,city:(null), state:1, country:1, postal:(null) ,phone:(null), age:(null), gender:(null)
MyDetails:
{
    address = India;
    name = "GamerLegend";
}

ios7と同じios5のログが欲しいです。私はいくつかの検索を行いましたが、事前に値を比較して null かどうかを確認し、空の文字列で辞書に追加できることを知っています。しかし、それはとても退屈です。これに対する他の簡単な回避策があるかどうか疑問に思っていました。より良い解決策はありますか?

これが私の現在の解決策です

-(void) checkForNull
{

    if([self.pop.firstNameTextField.text length] == 0)
        self.pop.firstNameTextField.text=@"";

    if([self.pop.addressTextField.text length] == 0)
        self.pop.addressTextField.text=@"";

    if([self.pop.cityTextField.text length] == 0)
        self.pop.cityTextField.text=@"";

    if([self.pop.postalCodeTextField.text length] == 0)
        self.pop.postalCodeTextField.text=@"";

    if([self.pop.phoneNumberTextField.text length] == 0)
        self.pop.phoneNumberTextField.text=@"";

    if([self.pop.ageTextField.text length] == 0)
        self.pop.ageTextField.text=@"18";

    if([self.pop.genderTextField.text length] == 0)
        self.pop.genderTextField.text=@"";
}
4

1 に答える 1