我想将一些元数据传递给将JSON
发布到服务器的方法。元数据由各种类型组成,包括字符串NSNumbers
,Bools
等。
我的JSON
发布方法适用于该消息。我还添加了一个可编译的字符串参数。我添加数组或字典对象的工作不起作用。当前该方法如下:
func postMessageToWeb ( _ message : ChatMessage, _ meta: String = "") {
//post to server
}
这是我调用方法的方式:
self.postMessageToWeb(ChatMessage(answer))
这会编译,但是,当我尝试在消息后包含字符串时,会出现各种编译器错误。例如
self.postMessageToWeb(ChatMessage(answer), meta: "test")
给出错误:
调用中的外部参数标签“元:”
将元数据发送到数组的语法是什么?
顺便说一句,我还尝试过使用其他数据类型作为Post方法的参数,例如[String: Any] = [] and dict=[:]
,但会遇到编译器错误。
答案 0 :(得分:2)
方法签名中参数前面的下划线_
意味着应在不带标签的情况下调用它。因此,调用定义的方法的正确方法是:
self.postMessageToWeb(ChatMessage(answer), "test")
如果要包含“元”标签(按照惯例),请按以下方式定义函数:
func postMessageToWeb(_ message: ChatMessage, meta: String = "") {...}
如vadian所指出的,约定是仅在第一个参数上使用_
,并且仅在方法名称隐含参数名称时(如您的情况)。
要接受String
以外的参数,应该使用AnyObject
而不是Any
,因为我相信JSON序列化仅适用于对象类型。您应该能够传递NSArray
,NSDictionary
,NSString
或NSNumber
对象以进行序列化(或其兼容的桥接Swift变体)。