Swift 4.0.1/Xcode9.1报错:'ClassResult'无'classification'成员 求解决
解决'Value of type 'ClassResult' has no member 'classification'报错
我之前在Swift 4版本迁移时也碰到过类似的API属性名变更问题,结合你的开发场景,给你几个针对性的排查和解决方向:
直接查看
ClassResult的官方定义:
按住Option键点击代码里的ClassResult类型,Xcode会弹出它的详细结构定义。这是最直接的方法——你能立刻看到这个类/结构体里到底包含哪些属性,大概率是classification已经被重命名了(比如常见的label、classLabel或者identifier都是视觉识别类结果的常用属性名)。比如如果你用的是Core ML生成的模型,Swift 4里自动生成的类属性名经常和Swift 3版本有差异。排查自定义/第三方库的Swift 4适配情况:
- 如果
ClassResult是你自己定义的类,仔细检查是否有拼写错误(Swift大小写敏感,别把Classification和classification搞混),或者是不是漏写了这个属性; - 如果是第三方视觉识别SDK返回的类型,确认你用的是不是该SDK的Swift 4兼容版本,很多旧库在适配Swift 4时会调整属性命名来符合新的语法规范。
- 如果
验证结果的实际类型:
有时候你以为拿到的是ClassResult,但实际可能是其他类型(比如Any或者数组元素),强制类型转换后导致属性访问失败。可以先打印类型确认:print(type(of: yourResultObject))确保你确实拿到了正确的
ClassResult实例。关于你尝试的下划线方案:
这种情况一般只出现在Obj-C桥接的旧代码中,Swift 4里很少会用下划线来命名属性,所以这个方向可能不对,还是以官方定义为准。
内容的提问来源于stack exchange,提问作者Grace
相关产品推荐
相关产品推荐

