2015-11-05 38 views
0

我正在構建一個可以計算兩個日期之間的天數的應用程序。當我打印結果到控制檯,我得到了一些代碼,包括我想從結果中刪除:在Swift中操作字符串

enter image description here

我試圖通過分割字符串,使用「componentsSeparatedByString」刪除不需要的代碼。

但是,爲了使用這種方法,我必須首先將'components'常量轉換爲NSString。當我嘗試這樣做,我得到一個錯誤信息:無法調用類型「的NSString」初始化與類型的參數列表「(字符串:NSDateComponents)」

@IBAction func calculateDays(sender: AnyObject) { 

    let start = String(firstSelectedDate.text!) 
    let end = String(secondSelectedDate.text!) 

    let dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "dd-MM-yyyy" 

    let startDate:NSDate = dateFormatter.dateFromString(start)! 
    let endDate:NSDate = dateFormatter.dateFromString(end)! 

    let cal = NSCalendar.currentCalendar() 
    let unit:NSCalendarUnit = NSCalendarUnit.NSDayCalendarUnit 

    let components = cal.components(unit, fromDate: startDate, toDate: endDate, options: []) 


    let newComponents = NSString(string: components) // Cannot invoke initializer for type 'NSString' with an argument list of type '(string: NSDateComponents)' 

    let componentsArray = newComponents?.componentsSeparatedByString("<NSDateComponents: 0x7f91aaf29980>") 

    print(componentsArray[1]) 

會很感激,如果有人能告訴我是什麼我做錯了。

在此先感謝!

回答

1

後你會得到components變量可以檢索day屬性,嘗試此相反:

let start = "2010-09-01" 
let end = "2010-09-08" 

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd" 

let startDate:NSDate = dateFormatter.dateFromString(start)! 
let endDate:NSDate = dateFormatter.dateFromString(end)! 

let calendar = NSCalendar.currentCalendar() 
let components = calendar.components([.Day], fromDate: startDate, toDate: endDate, options: []) 
print(components.day) // 7 

我希望這可以幫助您。

+0

解決了這個問題。謝謝你,維克多! – mhs5819