首页 > 解决方案 > 正确的对象和语法将杂项元数据传递给 Swift 中的另一个方法

问题描述

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

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=[:]但会出现编译器错误。

标签: iosswiftdictionary

解决方案


方法签名中参数前面的下划线_表示应该在没有标签的情况下调用它。因此,调用定义的方法的正确方法是:

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

如果要包含“元”标签(按照约定),请像这样定义函数:

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

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

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


推荐阅读