我创建了一个我想在我的 OS X 应用程序中使用的框架。自从更新到 Xcode 7 后El Capitan
,当我尝试命令单击import
语句时,Xcode 进入以下视图。
如何让 Xcode 正确显示 Swift 表示?我以前也遇到过,我的解决方案是重新创建每个我不想再做的项目文件。
根据我的经验,这个问题有两个可能的原因。第一个是找不到你的框架。要解决此问题,您需要转到目标的构建设置并添加到框架搜索路径的绝对路径:
/Users/{user}/path-to-framework-parent-directory
或相对于项目目录:
$(PROJECT_DIR)/path-to-framework-parent-directory
另一个可能的原因是框架的路径中包含一个空格。我发现无论您是尝试用反斜杠转义它../Project\ Name/frameworks
还是用双引号将整个路径都用完,都没有关系"../Project Name/frameworks"
。结果将是 SourceKit 无法加载该模块。
请注意,这$(PROJECT_DIR)
可能会扩展到其中包含空格的路径,并且也会导致相同的错误。所以它看起来像是 Xcode/SourceKit 中的一个错误(我尝试了最新的 Xcode 7.2-beta3 并且错误仍然存在)。
我的存储库在第二个硬盘上/Voluems/Macintosh HD/Repos
。我刚刚将硬盘重命名为HD
,所以路径看起来像/Volumes/HD/Repos
并且问题消失了。
运行产品->清洁,产品->构建对我有用。
我也遇到了这个问题,其他解决方案都不起作用。我终于在我的情况下弄清楚了:
目标名称中也不能有空格
要重命名它:
奇怪的是,只需将我的文件夹名称从“开发人员”更改为“开发”即可解决我的问题。
Max S. 的回答为我指明了正确的方向,但是我在框架路径中使用了“递归”选项。
为了让事情正常工作,我必须明确地直接添加一个路径,直接指向相关框架的直接父目录(而不是只拥有一个到具有“递归”选项集的更高目录之一的路径)。
HTH
在我的例子中,我已经为我的 SDK 和 podspec 创建了一个框架,用于制作可可豆荚。
我在使用我的 SDK 时遇到了同样的问题,当我将 Foundation API 导入到我正在使用我的 SDK 的文件时它已修复
import Foundation
这是另一种潜在的解决方案-对我有用的解决方案:
导入我从未为模拟器构建的框架后,仅适用于真实设备。Swift 模块没有出现,同样的错误。然后我为模拟器构建,它突然工作了,我可以看到 Swift 模块。
原因是当我制作我的框架时,我有一个步骤将 swift 模块从iphonesimulator
构建复制到通用构建,但对构建中的模块不做任何事情iphoneos
。所以我的猜测是这就是它不起作用的原因。
注意:一旦我选择了模拟器并构建它,它就会一直工作,无论构建目标是什么。