【发布时间】:2019-04-02 22:37:51
【问题描述】:
我查看了所有这些 Swift、asp.net 和 javascript 问题。
目标:
当我从MessageListController 中的聊天消息列表中选择一条消息时,我希望下一个ChatDetailController 中打开的会话成为选定的会话。
我在这个 iOS 图像中为我的 WatchKit 应用程序做同样的事情。选择与 Sophia 的消息并打开与 Sophia 的聊天。 [![在此处输入图片描述][6]][6]
我想传递 json “message_id”,即 chatMessageId 属性。正如您在代码中看到的那样,我已经将chatMessageId 从MessageModel 传递到ChatDetailController。
是ChatModel我需要通过的chatMessageId吗?还是我已经传递了我需要的数据?
传递的上下文:可选(HTWatch_Extension.MessageModel(合作伙伴:“9859”,昵称:“Marco”,消息:“你见过是狗吗?”,城市:“马德里”,countryBadgeImageURL:https://i.imgur.com/PJcyle7.jpg,messageListImageURL:@ 987654327@,chatMessageId:“Tva9d2OJyWHRC1AqEfKjclRwXnlRDQ”,状态:“离线”))
尝试:
我是否需要将解析ChatModel 的ChatModel 从awakeWithContext 方法中取出并放入MessageListController 的didSelectRowAt 方法中的do-catch 块?
消息列表控制器
// ...code...
var messageObject = [MessageModel]()
var chatObject = [ChatModel]()
// ...code...
override func table(_ table: WKInterfaceTable, didSelectRowAt rowIndex: Int) {
var messageContext = messageObject[rowIndex]
var chatContext = chatObject[rowIndex]
do {
guard let fileUrl = Bundle.main.url(forResource: "Chats", withExtension: "json") else {
print("File could not be located")
return
}
let data = try Data(contentsOf: fileUrl)
let decoder = JSONDecoder()
let msg = try decoder.decode([ChatModel].self, from: data)
self.chatObject = msg
} catch let error {
print(error)
}
messageContext.chatMessageId = (chatObject as AnyObject).filter { (dictionaryTemp:[String:String]) -> Bool in
return dictionaryTemp["message_id"] == chatContext.chatMessageId
}
// WatchKit's model presentation method.
presentController(withName: "ChatDetailController", context: messageContext)
}
【问题讨论】: