[英]Create codable struct with generic type
首先,很抱歉問題標題不清楚
我正在制作一個可編碼的結構,它將用作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等不同平台上使用它,所以我想找到一種更智能的方式來處理它。
使用如下通用名稱:
struct Message<T:Codable>: Codable{
var type: MessageType
var content: T
}
在消息結構中嘗試一下
var content: [String: Any]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.