转换为不相关的类型总是失败

Posted

技术标签:

【中文标题】转换为不相关的类型总是失败【英文标题】:Cast to unrelated type always fails 【发布时间】:2015-12-05 13:23:13 【问题描述】:

我有一个枚举声明为 Result<T, NSError>.like 在 Alamofire 有一个struct City 符合协议Address

struct City: Address 
   let title:String?

在网络请求和映射之后,我得到了 Result<City,NSError> 类型的填充结果

当我尝试将此结果传递给带有签名的方法时,问题就出现了

func checkResult(resul:Result<Address, NSError>)

编译器警告我“无法将 Result<City,NSError> 类型的值转换为预期的参数类型 Result<Address,NSError>

但是 City 符合 Address 并且我希望能够将通用结构传递给方法(因为有很多 Address 对象,如街道、房屋等) 有没有办法让编译器静音?

【问题讨论】:

【参考方案1】:

将您的函数转换为通用函数:

func checkResult<T: Address>(result: Result<T, NSError>) 
    // check

【讨论】:

以上是关于转换为不相关的类型总是失败的主要内容,如果未能解决你的问题,请参考以下文章

从“错误”转换为不相关类型“AuthErrorCode”总是失败

从 'Result<AnyObject>' 转换为不相关类型 'NSArray' 总是失败

从“NSPersistentStoreResult”转换为不相关类型“[entity]”总是失败

从 '(NSNumber) -> NSNumber' 转换为不相关类型 '(Any) -> Any' 总是失败

从 FIRRemoteConfigValue 转换为不相关的字符串类型总是失败:Firebase、Swift

从“UITableViewCell”转换为不相关类型“UIView”总是失败iOS9