ios - 更正对象和语法以将​​杂项元数据传递给 Swift 中的另一个方法

标签 ios swift dictionary

我想将一些元数据传递给将 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] = [] 和 dict=[:] 但会出现编译错误。

最佳答案

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

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

如果您想包含“元”标签(按照惯例),请像这样定义函数:

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

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

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

关于ios - 更正对象和语法以将​​杂项元数据传递给 Swift 中的另一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54855471/

相关文章:

Python - 从外部文本文件创建字典

python - 用于映射大数据的Python共享内存字典

ios - 如何在 iOS 中显示弹出窗口(见图)

swift - 如何检测EdgePan Gesture SwiftUI

ios - UIImageWriteToSavedPhotosAlbum 阻塞主线程

ios - 如何将数据添加到 firebase 数据库中已有的引用?

ios - UIButton 自定义背景颜色突出显示和禁用

python - 将重复的字典项目转换为具有 ID 数组的唯一项目

ios - 在模拟器上运行时 UIButton 宽度不填充工具栏

ios - 如何为 Cordova 插件设置链接器选项?