2015-11-05 45 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