尝试DateFormatting可选字符串

时间:2015-07-07 15:29:53

标签: swift optional

目前我从Rails API获取所有发票数据。

sed -i "s/user=$/user="${u}"/" "$SCRIPT_PATH"
sed -i "s/pass=$/pass="${p}"/" "$SCRIPT_PATH"

然后我将带有结果的数组传递给InvoicesController中的委托人:

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()
}

但是我无法将发票[“invoice_date”]可选转换为有效日期,目前它返回的是nil。

我在Playground中尝试了一些东西,并且它使用了一个Optional值:

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"])

            )
        }
    })
}

使用:

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"]))!

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

1 个答案:

答案 0 :(得分:0)

评论中回答了问题,但我想我会把它放在这里:

演员表中存在问题,并使用

invoice["invoice_date"] as! String

解决了它。