Исправьте объект и синтаксис для передачи разных метаданных другому методу в Swift - PullRequest
0 голосов
/ 24 февраля 2019

Я хотел бы передать некоторые метаданные методу, который отправляет JSON на сервер.Метаданные состоят из различных типов, включая строки, NSNumbers, Bools и т. Д.

Мой JSON метод post работает для сообщения.Я также добавил строковый аргумент, который компилируется.Мои попытки добавить объекты массива или словаря не работают.В настоящее время метод выглядит следующим образом:

 func postMessageToWeb ( _ message : ChatMessage, _ meta: String = "") {
        //post to server
}

Вот как я вызываю метод:

self.postMessageToWeb(ChatMessage(answer))

Это компилируется, однако, когда я пытаюсь включить строку после сообщения,Я получаю разные ошибки компилятора.Например,

self.postMessageToWeb(ChatMessage(answer), meta: "test") выдает ошибку:

При вызове метка постороннего аргумента 'meta:'

Каков синтаксис для отправки метаданных в массив?

Кстати, я также экспериментировал с использованием других типов данных в качестве аргументов для метода Post, таких как [String: Any] = [] and dict=[:], но получаю ошибки компилятора.

1 Ответ

0 голосов
/ 24 февраля 2019

Подчеркивание _ перед параметром в сигнатуре метода означает, что он должен вызываться без метки.Поэтому правильный способ вызова метода, как определено, будет следующим:

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

Если вы хотите включить мета-метку (в соответствии с соглашением), определите функцию следующим образом:

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

Как указал Вадиан, условием является использование _ только для первого параметра и только в том случае, если имя параметра подразумевается именем метода (как в вашем случае).

Для принятия параметровкроме String, вы должны использовать AnyObject вместо Any, так как я считаю, что сериализация JSON работает только с типами объектов.Вы должны быть в состоянии передать NSArray, NSDictionary, NSString или NSNumber объекты для сериализации (или их совместимые варианты Swift с мостовым соединением).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...