Swift 创建泛型类型的可编码结构
首先,很抱歉问题的标题不清楚 我正在制作一个可编码的结构,它将被用作json消息Swift 创建泛型类型的可编码结构,swift,codable,Swift,Codable,首先,很抱歉问题的标题不清楚 我正在制作一个可编码的结构,它将被用作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 {..
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 {...}
声明消息
时,如果其类型
为内容
,则其内容
的类型应为内容
let message = Message(
type: .content,
content: Content( ... )
}
当类型
为请求
时,其内容
的类型应为请求
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
}
struct消息:可编码{
变量类型:MessageType
var含量:T
}
使用通用代码,如下所示:
struct Message<T:Codable>: Codable{
var type: MessageType
var content: T
}
struct消息:可编码{
变量类型:MessageType
var含量:T
}
在消息中尝试此操作
var content: [String: Any]
在消息中尝试此操作
var content: [String: Any]
内容和请求是字典?不,
content
和request
也是可编码结构。顺便说一句,可编码结构总是字典使用它作为动态的试试这个[string:Any],然后映射你的objectoops,我会试试。内容和请求是字典?不,content
和request
是可编码结构,也是。顺便说一句,codable struct总是字典将其作为动态使用试试这个[string:Any],然后映射你的objectoops,我会试试。谢谢你的帮助,但它给了我类型“Message”不符合协议“Decodable”的错误;(这是因为没有在消息结构中定义密钥。谢谢您的帮助,但它给了我类型“Message”不符合协议“Decodable”
的错误;(这是因为没有在消息结构中定义密钥。非常感谢,我不知道泛型!非常感谢,我不知道泛型!