WatchKit имеет метод презентатора, который представляет QuickReplyButton с предопределенными текстовыми ответами, и эти ответы могут быть отправлены в элемент пользовательского интерфейса, такой как метка в ячейке / строке.
Я вставил строку в последнюю позицию, однако каждый последующий вызов вставляет новый ответ выше предыдущий ответ не ниже.
Я попытался добавить выбор текста в конец массива сообщений модели чата, используя self.chats.append(text as AnyObject)
, но выбор - строка, и я не могу добавить строку в массив модели чата. Value of type 'String' does not conform to 'AnyObject'
. Если я полностью опущу self.chats.append(text as AnyObject)
, это будет работать так, как показано.
ChatDetailController
// ...
// start of @IBAction
// ...
self.chats.append(text as AnyObject) // how do I write this?
let newIndex = self.chats.count - 1
//...
})
Модель
public struct ChatModel: Codable {
public var message: String
// more properties
enum CodingKeys: String, CodingKey {
case message = "messageText"
// more properties
}
public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
self.message = try container.decode(String.self, forKey: .message)
// more properties
}
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(self.message, forKey: .message)
// more properties
}
}
1020 * JSON *
[
{
"fromId": "wx1234skjksmsjdfwe234",
"toId": "wx43922sdkfjsfmmxdfmx",
"messageText": "Have you hopped on the bus Gus?",
"imageUrl": "https://i.imgur.com/PJcyle7.jpg",
"read": "true"
},
// more objects.
]