更正对象和语法以将​​其他元数据传递给Swift中的另一个方法

时间:2019-02-24 19:06:45

标签: ios swift dictionary

我想将一些元数据传递给将JSON发布到服务器的方法。元数据由各种类型组成,包括字符串NSNumbersBools等。

我的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=[:],但会遇到编译器错误。

1 个答案:

答案 0 :(得分:2)

方法签名中参数前面的下划线_意味着应在不带标签的情况下调用它。因此,调用定义的方法的正确方法是:

self.postMessageToWeb(ChatMessage(answer), "test")

如果要包含“元”标签(按照惯例),请按以下方式定义函数:

func postMessageToWeb(_ message: ChatMessage, meta: String = "") {...}

如vadian所指出的,约定是仅在第一个参数上使用_,并且仅在方法名称隐含参数名称时(如您的情况)。

要接受String以外的参数,应该使用AnyObject而不是Any,因为我相信JSON序列化仅适用于对象类型。您应该能够传递NSArrayNSDictionaryNSStringNSNumber对象以进行序列化(或其兼容的桥接Swift变体)。