我如何从Swift firebase中的Message kit获得日期



我正在研究消息套件,我想从消息套件中获得日期,但是我在使用它时出现了错误。我已经chatdashboardviewcontroller和我已经定义了计算属性(getFormatter)和上面的chatdashboard我已经定义了Message结构。

public static var getFormatter: String{
let dformatter = DateFormatter()
dformatter.dateFormat = "dd/MM/yyy HH:mm"
let dateToString = dformatter.string(from: Date())
return dateToString
}
struct Message: MessageType{
public var sender: SenderType
public var messageId: String
public var sentDate: Date
public var kind: MessageKind
}

在网络类中,想要访问这个getFormatter属性,它说me(不能调用非函数类型'String'的值),这是错误,请参阅代码并指导我,谢谢

func getAllMessagesForConverstion(id:String,compltion:@escaping(Result<[Message],Error>) -> Void){
checkMessageUSer(id) { (user) in
guard let users = user else {print("not getting the users sorry on getllMessage");return}
let messages : [Message] = users.compactMap({dic in
guard let content = dic["content"] as? String,
let dateString = dic["date"] as? String,
let messageId = dic["id"] as? String,
let isRead = dic["is_read"] as? String,
let senderEmail = dic["sender_email"] as? String,
let typeMessage = dic["type"] as? String,
let name = dic["name"] as? String,
let dateData = ChatDashboard.getFormatter(from: dateString)  else
{return nil}

let senderData = Sender(photo: "", senderId: senderEmail, displayName: name)
return Message(sender: senderData, messageId: messageId, sentDate: "", kind: .text(content))
//return Message(sender: senderData, messageId: messageId, sentDate: , kind: .text(content))
})
}
}

您的getFormattercomputed属性是一个string,它是今天的字符串格式(Date())

看到你想做什么,你需要改变getFormatter像下面(如果你能把它重命名为formatter更好,因为它是一个属性,而不是一个方法)

public static var formatter: DateFormatter {
let dformatter = DateFormatter()
dformatter.dateFormat = "dd/MM/yyy HH:mm"
return dformatter
}

然后你可以访问它并使用它来格式化你的日期字符串,像下面的getAllMessagesForConverstion

let dateData = ChatDashboard.formatter.date(from: dateString)

最新更新