gpt4 book ai didi

swift - 类型错误 : Cannot read property 'messageBody' of undefined

转载 作者:行者123 更新时间:2023-11-30 11:02:56 25 4
gpt4 key购买 nike

我想使用

通过 api 在我的应用程序中发送消息

( https://github.com/devslopes-learn/mac-chat-api )

当我尝试发送消息时,我总是在 Heroku 终端日志中收到此错误:

enter image description here

我尝试了一切,但似乎无法弄清楚为什么会发生这种情况。顺便说一句,我正在 Udemy 上的类(class)中学习这个 api。

这是我的发射:

func sendMessage(messageBody: String, userId: String, channelId: String, completion: @escaping CompletionHandler) {
let user = UserDataService.instance
socket.emit("newMessage", messageBody, userId, channelId, user.name, user.avatarName, user.avatarColor)
completion(true)
}

这里我使用这个函数:

@IBAction func sendMsgPressed(_ sender: Any) {
if AuthService.instance.isLoggedIn {
guard let channelId = MessageService.instance.selectedChannel?.id else { return }
guard let message = messageTxtField.text else { return }

SocketService.instance.sendMessage(messageBody: message, userId: UserDataService.instance.id, channelId: channelId) { (success) in
if success {
self.messageTxtField.resignFirstResponder()
self.messageTxtField.text = ""
}
}
}
}

最佳答案

查看 Swift 的 SocketIOClient API 文档 here ,您没有传递正确的符合 SocketData 对象类型,而是传递单独的参数。您应该为您的数据创建一个符合 SocketData 的对象,以确保您的数据可以在 socket.io 数据包中表示。下面基本上是他们文档中示例的重述:

struct CustomData: SocketData {
let messageBody: String
let userId: Int
let channelId: Int
let userName: String
let avatarColor: String

func socketRepresentation() -> SocketData {
return [
"messageBody": name,
"userId": userId,
"channelId": channelId,
"userName": userName,
"avatarColor": avatarColor,
]
}
}

let customData = CustomData(...)
socket.emit("newMessage", customData)

关于swift - 类型错误 : Cannot read property 'messageBody' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53090217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com