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不符合可解码的 我的问题是,当我们试图提供一个泛型结构

我有一个关于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
不符合
可解码的

我的问题是,当我们试图提供一个泛型
结构
而不是函数时,如何应用类似的解决方案。比如说,

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>()