С моими навыками Swift новичка я изо всех сил пытаюсь выяснить правильный синтаксис Swift, чтобы эта игровая площадка заработала. В зависимости от того, как я пытаюсь решить эту проблему, я либо получаю
Невозможно вызвать 'encode' со списком аргументов типа '(Encodable)'
который аналогичен тому, что было решено в этом вопросе Использование JSON Encoder для кодирования переменной с Codable as type, или я получаю
'(T) -> ()' требует, чтобы 'Encodable' соответствовал 'Encodable'
Я был бы очень признателен за решение с объяснением
ИЗМЕНИТЬ. Чтобы предоставить дополнительный контекст, шаблон, который я пытаюсь реализовать, предназначен для маршрутизатора промежуточного программного обеспечения. В зависимости от действий, выполненных в приложении, маршрутизатор сформирует сетевой запрос. Назначение codableParam - предоставить соответствующую структуру для варианта использования. Таким образом, все варианты вернут либо nil, либо тип Codable.
struct unityAuthenticationRequest: Codable {
var username : String
var password : String
}
enum test {
case volume
case num2
case num3
var codableParam: Encodable? {
switch self {
case .volume:
return unityAuthenticationRequest(username: "uname", password: "pwrods")
default:
return nil
}
}
}
func saveObject<T:Encodable>(_ object: T) {
let data = try? JSONEncoder().encode(object)
}
func dx<T: Codable>(fx: T) {
let datax = try? JSONEncoder().encode(fx)
}
let r = test.volume
saveObject(r.codableParam)
Encodable
и передать его в качестве входных данных дляsaveObject
, посколькуEncodable
не может использоваться как конкретный тип, о чем на самом деле сообщает вам сообщение об ошибке, если вы проверяете обе ошибки в проблемной строке. - person Dávid Pásztor   schedule 14.06.2018URLRequest
s, почему вы возвращаетеCodable
? Зачем вам нужно кодироватьURLRequest
в JSON? Как вы планируете выполнятьURLRequest
после его кодирования в JSON? Кстати, вы должны соответствовать соглашению об именах Swift, которое является UpperCamelCase для имен типов, поэтомуTest
иUnityAuthenticationRequest
будут подходящими. - person Dávid Pásztor   schedule 14.06.2018