Swift 无法将类型 [String : SomeProtocol] 的值分配给类型 [String : SomeProtocol]

Swift cannot assign value of type [String : SomeProtocol] to type [String : SomeProtocol]

我有一些名为 SomeProtocol 的协议,很少有符合它的结构

struct myStruct1: SomeProtocol {}
struct myStruct2: SomeProtocol {}

我有地图

var myArray = [String : SomeProtocol]()

当我尝试

myArray = ["val1": myStruct1(), "val2": myStruct2()] 

我收到一个错误:

Swift cannot assign value of type [String : SomeProtocol] to type [String : SomeProtocol]

正如 Hamish 在评论中提到的那样: 这是因为项目中有两个 SomeProtocol 的定义。

要解决此问题,您只需重命名其中一个协议即可。