尝试 DateFormatting 可选字符串

Trying to DateFormatting Optional String

目前我正在从我的 Rails API 中获取所有发票数据。

func get(path: String) {
    let url = NSURL(string: path)
    let session = NSURLSession.sharedSession()
    let task = session.dataTaskWithURL(url!, completionHandler: {data, response, error -> Void in
        if(error != nil) {
            print(error!.localizedDescription)
        }
        do {
            let results = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableLeaves)
            self.delegate.didReceiveAPIResults(results as! NSArray)
        } catch {
            print("Error")
        }
    })

    task!.resume()
}

然后我将包含结果的数组传递给我在 InvoicesController 中的委托:

func didReceiveAPIResults(results: NSArray) {
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
    dispatch_async(dispatch_get_main_queue(), {
        for invoice in results {
            // Create an individual item
            Invoice.createInManagedObjectContext(self.managedObjectContext,
                invoiceStatus: String(invoice["status"]),
                invoicePrice: NSDecimalNumber(string: String(invoice["price"])),
                invoiceDate: dateFormatter.dateFromString("2015-06-22T17:57:21.313Z")!,
                invoiceDueDate: String(invoice["invoice_date"])

            )
        }
    })
}

但我无法将发票["invoice_date"] 可选转换为有效日期,目前它returns 为零。

我在 Playground 中尝试了一些东西,它可以使用可选值:

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"

var dateString:String? = "2015-06-22T17:57:21.313Z"

dateFormatter.dateFromString(dateString!)

通过使用:

invoiceDate: dateFormatter.dateFromString(String(invoice["invoice_date"]))!

我收到这个错误:

fatal error: unexpectedly found nil while unwrapping an Optional value (lldb) 

有人提点建议吗?我在 iOS 9 平台上使用 swift 2。

问题已在评论中得到解答,但我想我应该把它放在这里:

转换有问题,使用

invoice["invoice_date"] as! String

解决了。