2014-06-14 19 views
0

我正在嘗試使用從日期選擇器中選擇日期並將其作爲開始日期作爲我的登錄憑證的一部分來實現。此日期選擇器已集成在UIAlert作爲鍵盤,並且它顯示在主警報框中的UITextField中。如何在WebService調用中使用%20而不在UITextField中顯示

-(void)requestStartTime 

{ 

//create the alertview 
startTimeAlert = [[UIAlertView alloc] initWithTitle:@"Sales Start:" 
              message:nil 
             delegate:self 
           cancelButtonTitle:@"Cancel" 
           otherButtonTitles:@"Next", nil]; 
startTimeAlert.alertViewStyle = UIAlertViewStylePlainTextInput; 



//create the datepicker 
startTimeDatePicker = [[UIDatePicker alloc] init]; 
[startTimeDatePicker addTarget:self action:@selector(startTimeDateChanged:) forControlEvents:UIControlEventValueChanged]; 



startTimeDatePicker.datePickerMode = UIDatePickerModeDateAndTime; 
NSDate *now = [NSDate date]; 
startTimeDatePicker.maximumDate = now; 


NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDateComponents *comps = [calendar components: NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:[NSDate date]]; 
[comps setHour:8]; 
[comps setMinute:0]; 
[comps setSecond:0]; 

NSDate *dateFromComps = [calendar dateFromComponents:comps]; // current date/month/year set to 8:00am 


startTimeDatePicker.date = dateFromComps; 
//get the textfield provided in the plain text alertview 
startTimeTextField = [startTimeAlert textFieldAtIndex:0]; 
//change the textfields inputView to the date picker 
startTimeTextField.inputView = startTimeDatePicker; 
[startTimeTextField setTextAlignment:NSTextAlignmentCenter]; 
//create a date formatter to suitably show the date 


startTimeDateFormatter = [[NSDateFormatter alloc] init]; 
[startTimeDateFormatter setDateFormat:@"yyyy-MM-dd%20HH:mm:ss"]; 
startTimeTextField.text = [startTimeDateFormatter stringFromDate:dateFromComps]; 

[startTimeAlert show]; 
[startTimeTextField becomeFirstResponder]; 

self.selectedStartDate = startTimeTextField.text; 
} 

如果你注意到,我使用的日期格式爲@ 「YYYY-MM-DD%20HH:MM:SS」。我必須使用它,因爲它取代了空間字符。

self.selectedStartDate = startTimeTextField.text; 

selectedStartDate是我的字符串,而startTimeTextField是我的日期選擇輸入的地方。 下面,我將使用此字符串將我的連接方法發佈到MYSQL。

NSString *salesStr = @"http://"; 
salesStr = [salesStr stringByAppendingString:host]; 
salesStr = [salesStr stringByAppendingString:@":8080/sales.php?password="]; 
salesStr = [salesStr stringByAppendingString:pass]; 
salesStr = [salesStr stringByAppendingString:@"&db="]; 
salesStr = [salesStr stringByAppendingString:db]; 
salesStr = [salesStr stringByAppendingString:@"&sdate="]; 
salesStr = [salesStr stringByAppendingString:selectedStartDate]; 
salesStr = [salesStr stringByAppendingString:@"&edate="]; 
salesStr = [salesStr stringByAppendingString:selectedEndDate]; 

這一切都適合我。 我的問題是:如何使用%20而不在文本框中顯示它?它看起來不專業,我需要它顯示一個空間而不是%20,並且仍然正常工作。

回答

1

設定日期格式爲 「YYYY-MM-DD HH:MM:SS」,並沒有百分號轉義在文本框顯示出來:

[startTimeDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 

當你創建你的查詢字符串中使用stringByAddingPercentEscapesUsingEncoding

salesStr = [salesStr stringByAppendingString:[selectedStartDate stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
+0

完美!非常感謝。 – Machina

相關問題