ios - 正确的对象和语法将杂项元数据传递给 Swift 中的另一个方法
问题描述
我想将一些元数据传递给发布JSON
到服务器的方法。元数据由各种类型组成,包括字符串、NSNumbers
等Bools
。
我JSON
的 post 方法适用于消息。我还添加了一个可以编译的字符串参数。我添加数组或字典对象的努力不起作用。目前该方法如下所示:
func postMessageToWeb ( _ message : ChatMessage, _ meta: String = "") {
//post to server
}
这是我调用该方法的方式:
self.postMessageToWeb(ChatMessage(answer))
但是,当我尝试在消息之后包含字符串时,这会编译,我会收到各种编译器错误。例如
self.postMessageToWeb(ChatMessage(answer), meta: "test")
给出错误:
调用中的无关参数标签“元:”
将元数据发送到数组的语法是什么?
顺便说一句,我还尝试过使用其他数据类型作为 Post 方法的参数,例如[String: Any] = [] and dict=[:]
但会出现编译器错误。
解决方案
方法签名中参数前面的下划线_
表示应该在没有标签的情况下调用它。因此,调用定义的方法的正确方法是:
self.postMessageToWeb(ChatMessage(answer), "test")
如果要包含“元”标签(按照约定),请像这样定义函数:
func postMessageToWeb(_ message: ChatMessage, meta: String = "") {...}
正如 vadian 指出的那样,约定仅_
在第一个参数上使用,并且仅在方法名称隐含参数名称时(如您的情况)。
要接受 a 以外的参数String
,您应该使用AnyObject
而不是,Any
因为我相信 JSON 序列化仅适用于对象类型。您应该能够传递NSArray
、NSDictionary
或对象进行序列化(NSString
或其NSNumber
兼容的桥接 Swift 变体)。
推荐阅读
- amazon-web-services - 上传到amazon aws s3时如何获取本地文件?
- plotly - 如何在 plotly.js 图表中添加彩色背景条
- excel - 在遇到下一个单元格之前将空白单元格上方的数据复制到最后一个空白单元格包含
- eclipse - Eclipse Git 中的“Assume Unchanged”在后台运行什么实际的 git 命令?
- prolog - 为什么 Prolog 将一个自由变量统一到另一个自由变量?
- c - sed 错误地去除反斜杠
- javascript - 映射两个数组并将结果复制到新数组中
- jquery - 我如何通过 ajax 显示 json reperesented 错误?
- c# - XUnit 测试不运行(无限循环)
- php - Redis - 为什么必须总是重启服务?- MISCONF Redis 被配置为保存 RDB 快照,但目前无法在磁盘上持久化