Swift:符合与对象相同协议的对象数组
我有一个关于swift中泛型的问题 首先,在Swift:符合与对象相同协议的对象数组,swift,generics,Swift,Generics,我有一个关于swift中泛型的问题 首先,在JSONDecoder中,我们有下面的函数 func decode<T>(_ type: T.Type, from data: Data) throws -> T where T : Decodable 也作为, decoder.decode([Book].self, from: bookListData) 我们能够为函数提供Book对象数组,但是据我所知[Book]。self不符合可解码的 我的问题是,当我们试图提供一个泛型结构
JSONDecoder
中,我们有下面的函数
func decode<T>(_ type: T.Type, from data: Data) throws -> T where T : Decodable
也作为,
decoder.decode([Book].self, from: bookListData)
我们能够为函数提供Book
对象数组,但是据我所知[Book]。self
不符合可解码的
我的问题是,当我们试图提供一个泛型结构
或类
而不是函数时,如何应用类似的解决方案。比如说,
protocol Publishable { /* literally empty */ }
class Manager<T: Publishable> {
var data: T?
// managing stuff
}
但我们不能直接说,
let bookListManager = Manager<[Book]>()
然后呢,
let bookListManager = Manager<BookList>()
let bookListManager=Manager()
会有用的。然而,这将需要我创造吨的中间结构,这将是不方便的
据我所知,赛尔夫并不符合可解码的
(实际上,那是[Book]
,不是[Book]。键入,而是[Book]。你不是这个意思。)
扩展数组:可解码,其中元素:可解码{…
如果您想要类似的功能,请进行类似的扩展
扩展数组:可发布,其中元素:可发布{}
让bookListManager=Manager()
对我有效。请编辑您的问题并提供一个已编辑的。@Leodabus我仍然不确定您的问题是什么。显示您的书
声明。现在您的泛型类型不需要是可解码的
谢谢您的回答。直接实现了第二行,显然它正在工作。我正在搜索[Decodable]。self
符合Decodable
找不到任何东西,但可能是我的错。@Jessy
let bookListManager = Manager<[Book]>()
struct BookList: Publishable {
var books: [Book]
}
let bookListManager = Manager<BookList>()