框架中的Swift扩展
我正在学习
Swift的扩展并遇到一个有点奇怪的问题.
当我在String上编写扩展并将其编译到框架中时,我能够将框架导入到不同的项目中并使用字符串扩展而没有任何问题.但是,当我在NSDate上编写扩展并尝试在不同的项目中使用它时,编译器报告“NSDate没有名为…的成员” 确切地说,我创建了一个非常简单的快速文件,包括这些代码行 – import Foundation extension NSDate { func blah() -> Int { return 0 } } 然后我创建了一个目标(Cocoa Framework)并将此文件添加到编译列表中.该框架已成功编译. 然后我创建了一个命令行工具并导入了这个项目,同时链接到框架.当我在NSDate上调用函数blah()时,编译器抱怨. 我正在使用Xcode beta 3. 解决方法
(如
http://colemancda.github.io/programming/2015/02/12/embedded-swift-frameworks-osx-command-line-tools/所述)
1.创建Objective-C命令行工具并更改搜索路径 不是斯威夫特.您可以为您在命令行工具中放置的代码创建一个Swift框架,但该工具本身不能编译任何Swift代码.这样做会使链接器混乱,并使其看到Swift库的重复声明(一个在装运的.dylib中,另一个嵌入在命令行工具中). > Runpath搜索路径: 调试:$(继承)@executable_path /../ Frameworks @executable_path / $(PRODUCT_NAME).bundle / Contents / Frameworks 发布:$(继承)@executable_path /../框架 2.创建一个包并更改构建设置 赋予它与命令行工具相同的名称,但后缀为Bundle(例如CommandLineToolProductNameBundle).还要确保它与命令行工具在同一项目中的目标. >目标名称:命令行工具产品名称包 >嵌入式内容包含Swift代码:是 3.在Build Phases中添加依赖项 >目标依赖项:您的命令行工具 4.更改捆绑包方案中的“运行”配置 您也可以选择隐藏命令行工具的方案,因为它不能独立运行. >可执行文件:您的命令行工具> Debug Executable:YES (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |