Прежде всего, извините за неясное название вопроса
Я делаю кодируемую структуру, которая будет использоваться в качестве сообщения json.
enum MessageType: String, Codable{
case content
case request
case response
}
struct Message: Codable{
var type: MessageType
var content: /* NEED HELP HERE */
}
struct Content: Codable {...}
struct Request: Codable {...}
struct Response: Codable {...}
При объявлении Message
, еслиего type
равен content
, тип content
должен быть Content
.
let message = Message(
type: .content,
content: Content( ... )
}
Когда type
равен request
, тип content
должен быть Request
.
let message = Message(
type: .request,
content: Request( ... )
}
Тогда, как мне установить тип свойства content
?
Я пытался сделать это как String
следующим образом:
struct Message: Codable{
var type: MessageType
var content: String
}
struct Content: Codable{
var jsonString: String{
return String(data: try! JSONEncoder().encode(self), encoding: .utf8)
}
}
let foo = Message(
var type: .content,
var content: Content ( ... ).jsonString
)
, и я мог бы использовать его, но я знаю об использовании его на разных платформах, таких как Android, поэтому яхочу получить более умный способ справиться с этим.