尝试 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
解决了。
目前我正在从我的 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
解决了。