我正在尝试创建一个聊天应用程序,以显示每条消息的日期。下面的方法对于较早版本的swift来说很好用,但是某种程度上这些功能在Swift 4中不起作用。
class Message {
var text: String?
var incoming = false
var timestamp: Date?
}
private var sections = [Date: [Message]]()
private var dates = [Date]()
let sendButton = UIButton()
sendButton.translatesAutoresizingMaskIntoConstraints = false
newMessageArea.addSubview(sendButton)
sendButton.setTitle("Send", for: .normal)
sendButton.setContentHuggingPriority(UILayoutPriority(rawValue: 251), for: .horizontal)
sendButton.addTarget(self, action: #selector(pressedSend), for: .touchUpInside)
sendButton.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 751), for: .horizontal)
@objc func pressedSend(button: UIButton){
guard let text = newMessageField.text, text.count > 0 else {return}
let message = Message()
message.text = text
message.incoming = false
message.timestamp = Date()
addMessage(message: message)
newMessageField.text = ""
tableView.reloadData()
tableView.scrollToBottom()
view.endEditing(true)
}
func addMessage(message: Message){
guard let date = message.timestamp else {return}
let calendar = Calendar.current
let startDay = calendar.startOfDay(for: date)
var messages = sections[startDay]
if messages == nil {
dates.append(startDay)
messages = [Message]()
}
messages!.append(message)
sections[startDay] = messages
}
在添加代码行以添加时间戳之前,一切正常。有人看到我的代码有问题吗?或者有人可以提供其他替代方法,说明如何为消息添加时间戳。 在此先感谢(并请记住,我是一个初学者)。