我想将一些元数据传递给将 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] = [] 和 dict=[:]
但会出现编译错误。
最佳答案
方法签名中参数前的下划线 _
表示应该在没有标签的情况下调用它。因此,按照定义调用方法的正确方法是:
self.postMessageToWeb(ChatMessage(answer), "test")
如果您想包含“元”标签(按照惯例),请像这样定义函数:
func postMessageToWeb(_ message: ChatMessage, meta: String = "") {...}
正如 vadian 指出的那样,惯例是仅在第一个参数上使用 _
,并且仅当方法名称隐含参数名称时(如您的情况)。
要接受 String
以外的参数,您应该使用 AnyObject
而不是 Any
,因为我认为 JSON 序列化仅适用于对象类型。您应该能够传递 NSArray
、NSDictionary
、NSString
或 NSNumber
对象进行序列化(或其兼容的桥接 Swift变体)。
关于ios - 更正对象和语法以将杂项元数据传递给 Swift 中的另一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54855471/