Xcode模块名称区分大小写吗?

时间:2019-10-21 16:34:37

标签: xcode

我有4个Cocoa Touch Framework项目:存储模型存储模型。我试图将合同和实现分开以提供控制反转架构原则。 存储包含协议,存储包含存储协议的实现。与模型模型类似。

当我尝试将存储导入到存储时,结果出现以下错误:

  

无法为“存储”加载基础模块

与将模型导入模型的情况相同。

但是将存储导入到 Model 并将 model 导入到 Storage 并没有问题。看起来模块命名不区分大小写。但是我可以将两个模块存储存储导入到模型。而且我无法理解模块命名的原理。 “无法为以下模块加载底层模块”-没说什么是错的。

Xcode中的模块名称是否区分大小写?如何将存储导入存储


这个问题是我真正的发展问题的结果。为了清晰再现,我将在简化示例中逐步说明问题。

1)打开Xcode->创建新的Xcode项目->单视图应用程序(产品名称=应用程序,目录=案例敏感卷根目录中的应用程序)

> diskutil info dev

...  
File System Personality:   Case-sensitive APFS.  
...

2)Xcode->文件->新项目-> Cocoa Touch Framework(产品名称= X ,目录= App,添加到= App,组= App)

3)Xcode->文件->新项目-> Cocoa Touch Framework(产品名称= x ,目录= App,添加到= App,组= App)

4)Xcode->文件->新项目-> Cocoa Touch框架(产品名称= Y ,目录= App,添加到= App,组= App)

5)将添加到 x 新的swift文件Src.swift,其代码为:protocol XProtocol { }

6)编译 x -成功

7)将添加到 X 的新Swift文件Src.swift,其代码为:class XClass { }

8)编译 X -成功

7)将添加到 Y 新的Swift文件Src.swift,代码为:class YClass { }

8)编译 Y -成功

9)将import X添加到 Y

的Src.swift顶部

10)编译 Y -成功

11)在 Y

的Src.swift顶部,将import X替换为import x

12)编译 Y -失败。错误:

  

无法将模块“ X”加载为“ x”

13)将import x添加到 X

的Src.swift的顶部

14)编译 X -失败。错误:

  

无法将模块“ X”加载为“ x”

15)将import X添加到 x

的Src.swift的顶部

16)编译 x -失败。错误:

  

无法加载“ X”的基础模块

此复制为我提供了其他结果,但我仍然不了解模块命名的原理。看起来模块名称应该不区分大小写。但这是不可能的事实。错误尚不清楚。苹果是否提供一些有关此的文档?


注意(01.11.19)

如果使用静态库而不是Cocoa Touch Framework,则缺少问题。我可以将 x 导入 X 并将 x X 都导入 Y 问题。

1 个答案:

答案 0 :(得分:2)

iOS设备使用区分大小写的文件命名,但是模拟器和Xcode在不区分大小写的Mac上运行。当您要求加载由框架表示的模块时,实际上是在命名文件(该框架为文件夹)。因此,我想您遇到的问题仅是由于在试图编译此代码的Mac上文件名(路径名,文件URL等)不区分大小写的事实造成的。