【发布时间】:2017-01-03 03:06:44
【问题描述】:
我有这个结构:
struct message {
var id: String = "0"
var text: String = ""
var date: Date!
var status: String = ""
}
我必须从 dbase 加载这个结构,它以String 格式导出,也以date 格式导出。
所以我写了这段代码来将String转换为Date类型:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = NSTimeZone(abbreviation: "UTC") as TimeZone!
let dataDate = dateFormatter.date(from: elemMessage["date"] as! String)!
我将它加载到结构中:
message(id: elemMessage["id"] as! String, text: elemMessage["text"] as! String, date: dataDate as! Date, status: elemMessage["status"] as! String)
但我有这个警告:“从Date 转换为不相关的类型Date 总是失败”
因此,如果我运行应用程序,它将失败。
我该如何解决这个问题,结构中的 date var 必须是 Date 类型。
谢谢。
【问题讨论】:
-
与问题无关,但是:您确定消息的空文本或状态有意义吗?似乎是一个非常不合理的默认值
-
您显示的代码导致的错误与您的不同:错误:参数标签不正确。 (
data:必须是date:?)请显示与导致问题的代码完全相同的代码。您还最好展示elemMessage是如何声明的。这不是一个关键问题,但您最好使用 UpperCamelCase 作为类型名称。 -
抱歉参数标签是
date:复制错误。elemMessage是来自 dbase 的 json 解析,它可以工作。我在date上有错误 -
Swift 是一种类型推断语言。
var id = "0" -
你怎么知道你的日期是UTC?这种格式对我来说就像当地时间。如果是 UTC,那里会有一个 Z 或 +0000