如何删除Swift中的Optional("")和格式化日期

时间:2016-02-17 08:24:02

标签: ios swift nsdate

我有以下代码:

let dateToday = NSDate()

我通过功能“将”传递给分数视图控制器:

func saveScore(){

    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    let gameResult = NSEntityDescription.insertNewObjectForEntityForName("SaveGame", inManagedObjectContext: appDelegate.managedObjectContext) as! SaveGame

    gameResult.datePlayed = dateToday
    // other data goes here

self.performSegueWithIdentifier(“scoreSegue", sender: self)
}

在分数视图控制器中,我将其显示为:

cell.textLabel?.text = "Date: \(game.datePlayed)

但是,我只使用Optional("")行获得此行。

pls check my screenshot

如何删除Optional (" ")以及如何将日期格式化为: MM/dd/yyyy hh:mm (AM/PM)

1 个答案:

答案 0 :(得分:2)

要删除Optionnal(“”)指示,您可以像这样使用条件绑定:

if let date = game.datePlayed {
    cell.textLabel?.text = "Date: \(date)"
} else {
    //Here display something if no date is available
}

你也可以用game.datePlayed!强行打开你的变量,但我建议反对它

要将日期格式化为可读的内容,请使用NSDateFormatter,例如:

let formatter = NSDateFormatter()
formatter.dateStyle = NSDateFormatterStyle.LongStyle
formatter.timeStyle = .MediumStyle

let dateString = formatter.stringFromDate(date)

您可以更改dateStyletimeStyle以满足您的需求(在.ShortStyle.MediumStyle.LongStyle.FullStyle之间进行选择

另外,您可以使用如下所示的自定义日期格式化程序:

let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd 'at' HH:mm"

let dateString = formatter.stringFromDate(date)