Xcode 无法为我自己的框架生成 Swift 表示
Xcode Couldn't Generate Swift Representation for my own framework
我已经创建了一个框架,我想在我的 OS X 应用程序中使用它。由于在 El Capitan
上更新到 Xcode 7,当我尝试命令单击 import
语句时,Xcode 转到以下视图。
如何让 Xcode 正确显示 Swift 表示?
我以前遇到过这种情况,我的解决方案是重新创建我不想再做的每个项目文件。
根据我的经验,这个问题有两个可能的原因。
第一个是你的框架找不到。要解决此问题,您需要转到目标的 Build Settings 并向 Framework Search Paths 添加一个绝对路径:
/Users/{user}/path-to-framework-parent-directory
或相对于项目目录:
$(PROJECT_DIR)/path-to-framework-parent-directory
另一个可能的原因是您的框架路径中包含 space。我发现无论您是尝试使用反斜杠 ../Project\ Name/frameworks
转义它还是将整个路径放在双引号 "../Project Name/frameworks"
中都没有关系。结果将是 SourceKit 无法加载模块。
请注意,$(PROJECT_DIR)
可以扩展到其中包含 space 的路径,它也会导致相同的错误。所以它看起来像是 Xcode/SourceKit 中的错误(我尝试了最新的 Xcode 7.2-beta3,错误仍然存在)。
我的存储库在第二个硬盘上 /Voluems/Macintosh HD/Repos
。我刚刚将硬盘重命名为 HD
,所以路径看起来像 /Volumes/HD/Repos
,问题就消失了。
运行 Product->Clean,Product->Build 对我有用。
Max S. 的回答为我指明了正确的方向,但是我在框架路径中使用了 'recursive' 选项。
为了让事情正常进行,我必须明确地添加一个直接指向有问题的框架的直接父目录的路径(而不是只使用 'recursive' 选项集指向其更高层目录之一的路径).
HTH
我也遇到了这个问题,其他解决方案都没有用。我终于在我的案例中弄明白了:
目标名称也不能包含 space
重命名:
- 转到您的项目设置
- 如果左侧没有目标列表列,请展开
- 单击相关目标一次(或在选中时按 Enter 或 Tab)并输入新名称,不带space
奇怪的是,将我的文件夹的名称从 'Developer' 更改为 'Development' 解决了我的问题。
就我而言,我已经为我的 SDK 创建了一个框架以及 podspec 以使其成为 cocoa pod。
我在使用我的 SDK 时遇到了同样的问题,当我将 Foundation API 导入我正在使用我的 SDK
的文件时它得到了修复
import Foundation
这是另一个可能的解决方案 - 一个对我有用的解决方案:
导入我从未为模拟器构建的框架后,只为真实设备构建。 Swift 模块没有显示,同样的错误。然后我为模拟器构建它突然工作了,我可以看到 Swift 模块。
原因是当我制作我的框架时,我有一个步骤将 swift 模块从 iphonesimulator
构建复制到通用构建,但不对 iphonesimulator
中的模块执行任何操作=11=] 建造。所以我猜这就是它不起作用的原因。
注意:一旦我选择并构建了模拟器,无论构建目的地如何,它都会一直运行。
我已经创建了一个框架,我想在我的 OS X 应用程序中使用它。由于在 El Capitan
上更新到 Xcode 7,当我尝试命令单击 import
语句时,Xcode 转到以下视图。
如何让 Xcode 正确显示 Swift 表示? 我以前遇到过这种情况,我的解决方案是重新创建我不想再做的每个项目文件。
根据我的经验,这个问题有两个可能的原因。 第一个是你的框架找不到。要解决此问题,您需要转到目标的 Build Settings 并向 Framework Search Paths 添加一个绝对路径:
/Users/{user}/path-to-framework-parent-directory
或相对于项目目录:
$(PROJECT_DIR)/path-to-framework-parent-directory
另一个可能的原因是您的框架路径中包含 space。我发现无论您是尝试使用反斜杠 ../Project\ Name/frameworks
转义它还是将整个路径放在双引号 "../Project Name/frameworks"
中都没有关系。结果将是 SourceKit 无法加载模块。
请注意,$(PROJECT_DIR)
可以扩展到其中包含 space 的路径,它也会导致相同的错误。所以它看起来像是 Xcode/SourceKit 中的错误(我尝试了最新的 Xcode 7.2-beta3,错误仍然存在)。
我的存储库在第二个硬盘上 /Voluems/Macintosh HD/Repos
。我刚刚将硬盘重命名为 HD
,所以路径看起来像 /Volumes/HD/Repos
,问题就消失了。
运行 Product->Clean,Product->Build 对我有用。
Max S. 的回答为我指明了正确的方向,但是我在框架路径中使用了 'recursive' 选项。
为了让事情正常进行,我必须明确地添加一个直接指向有问题的框架的直接父目录的路径(而不是只使用 'recursive' 选项集指向其更高层目录之一的路径).
HTH
我也遇到了这个问题,其他解决方案都没有用。我终于在我的案例中弄明白了:
目标名称也不能包含 space
重命名:
- 转到您的项目设置
- 如果左侧没有目标列表列,请展开
- 单击相关目标一次(或在选中时按 Enter 或 Tab)并输入新名称,不带space
奇怪的是,将我的文件夹的名称从 'Developer' 更改为 'Development' 解决了我的问题。
就我而言,我已经为我的 SDK 创建了一个框架以及 podspec 以使其成为 cocoa pod。
我在使用我的 SDK 时遇到了同样的问题,当我将 Foundation API 导入我正在使用我的 SDK
的文件时它得到了修复import Foundation
这是另一个可能的解决方案 - 一个对我有用的解决方案:
导入我从未为模拟器构建的框架后,只为真实设备构建。 Swift 模块没有显示,同样的错误。然后我为模拟器构建它突然工作了,我可以看到 Swift 模块。
原因是当我制作我的框架时,我有一个步骤将 swift 模块从 iphonesimulator
构建复制到通用构建,但不对 iphonesimulator
中的模块执行任何操作=11=] 建造。所以我猜这就是它不起作用的原因。
注意:一旦我选择并构建了模拟器,无论构建目的地如何,它都会一直运行。