当前位置:  开发笔记 > IOS > 正文

X不是Y的成员类型

如何解决《X不是Y的成员类型》经验,为你挑选了2个好方法。

我在swift项目中遇到了模块名称间距的问题.

我在一个新项目中试过这个,一切正常:

我有2个模块,其中包含相同的类名,我可以Module.Class毫无问题地引用该类.

我有一个现有的快速项目,我无法让这个工作.我一直在收到错误

在此输入图像描述

因此,你可以看到我是否不尝试Module-Scope类,一切正常.

(是的,我已尝试过并且没有.Type添加).

所以我假设我的编译器设置中有一些东西.我唯一能想到的是我的LocationMessage类不是在主DataManager"类"文件中定义的,而是在不同的文件中定义的.

但我真的无法做出正面或反面的事情.有什么建议?

项目结构

框架:DataManager

DataManager.swift

LocationMessages.swift

框架:ReferenceTest

File.swift

所以我的问题是,File.swift我想引用定义一个类LocationMessages.swift里面DataManager.framework 的类IS公众

@objc(DMLocationMessage)
final public class LocationMessage : ParsedMessage {

小智.. 20

swift编译器中也存在这个错误:不同文件中的SR-631扩展不能互相识别

编译的结果(成功/失败)取决于" 构建阶段">"编译源"设置中的文件顺序.

我有完全相同的错误消息:X不是Y的成员类型.通过重新安排编译源解决了这个问题.



1> 小智..:

swift编译器中也存在这个错误:不同文件中的SR-631扩展不能互相识别

编译的结果(成功/失败)取决于" 构建阶段">"编译源"设置中的文件顺序.

我有完全相同的错误消息:X不是Y的成员类型.通过重新安排编译源解决了这个问题.


谢谢!这节省了我的夜晚
如果您使用的是Swift`2.0`,`3.1`或`4.1`:将定义枚举的文件放在_Build Phase>编译Sources_设置的顶部。

2> fluidsonic..:

class/struct/enum DataManager的代码中可能有一个隐藏DataManager模块的地方。该错误表明它找不到应LocationManager在何处读取模块的类型DataManager

您的应用程序模块的设计方式应使您无需除import语句外就显式使用模块的名称。因此,LocationMessage.Type无需说明模块即可直接使用。

这是我们所有应用程序模块都以开头的原因之一X,例如XDataManager。这样可以避免与Apple的模块,外部模块(例如CocoaPods的模块)和类型(例如您的情况)发生冲突。
X也很明显,这些模块是应用程序本身的一部分,而不是某些第三方框架。

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有