【发布时间】:2019-03-05 11:33:16
【问题描述】:
我有一些属于一种协议类型的值的数组。我需要将这些值转换为另一种协议类型,以便我可以从中访问方法。但是铸造对我来说是零回报。为什么? 从一种协议类型转换为另一种协议类型的条件是什么?
Protocol Source: CustomStringConvertible, InputDescribeable {
func getAnimals() -> [Source]}
Protocol Map {
func MapTOAnimal() -> ProtocolX
}
Class Test {
let try = dog.getAnimals() // I have 4 values here of type [Source]
let trytry = try as? Map // returns nil
let needed = trytry.MapToAnimal
}
【问题讨论】:
-
为你的代码提供强制转换方法
-
"从一种协议类型转换为另一种协议类型的条件是什么?" - 对象必须符合两种协议
-
请添加一些代码
-
你昨天不是问了同样的问题还是用了一些代码?你为什么不回复那个问题中的 cmets 而不是删除它?
-
类型转换不会将一种类型的对象转换为另一种类型,它只是告诉编译器您希望在特定时间如何处理给定对象。
dog.getAnimals()实际上并没有返回一个Source的数组,它返回一个符合Source协议的类或结构的数组。为了将其中一个东西转换为Map,类或结构必须符合Map以及Source
标签: ios swift prototype protocols typecasting-operator