在Swift中使用Objective-C扩展类

问题描述:

我想在Swift中编写我的Objective-C项目的新特​​性。我有一个名为NSString +扩展的现有Objective-C文件,如下所示在Swift中使用Objective-C扩展类

@interface NSString (Extensions) 

该文件被命名为NSString.Extensions.h。我有一些应用程序特定的实例方法(例如:stringByRemovingSpecialCharacters)。我添加了一个头文件(桥接头),在我的项目设置中的Swift编译器 - 代码生成中特定它。我在该头文件中添加了#import“NSString + Extensions.h”。但是扩展文件中的方法都不能从Swift文件中调用。我如何在Swift中使用这个扩展文件?我有更多的扩展文件 - NSData + Encryption.h等,我也想使用它。

+1

你看这个:http://stackoverflow.com/questions/24006264/how-to-call-an-objective-c-category-method-in-swift? – 2014-10-27 22:43:55

+0

我已经使用Swift代码这样的扩展文件。你可以发布你的文件的内容?我在Xcode 6.0.1中遇到的一个问题是,如果导入的.h文件包含方法的重复定义,则在重复方法定义之后声明的任何东西在Swift中都不可见。所以,如果你的.h恰好很长,检查重复的定义并删除它们。 – 2014-10-28 03:44:47

如果您将一个Objective-C文件添加到swift项目中,xcode会询问您是否要添加一个目标-c桥接标头,并且您回复yes。你应该在桥接文件中导入你的文件,这将允许你从你的swift文件中调用它们。 PS,你可以删除目前没有用的Objective-C文件。

+0

是的,我已经做到了。我可以用这种方式使用自定义的Obj-C类(我更新了我的问题来说明桥接头只是为了清楚),但我不能使用obj-C文件,它是Obj-C主文件或本地文件的扩展你叫它吗?)class ex:NSString。我的自定义类是 - NSString(扩展)或NSString + Extensions.h。所以,如果我导入的头,我可以做NSString * str = @“foo%&$%&"; str = [str stringByRemovingSpecialCharacters]; – Dave 2014-10-27 18:01:18

+0

我不认为你想删除你的Objective-C文件桥接头有一个import语句对于这个文件,并且文件需要存在。 – 2014-10-28 03:47:55

+0

不只是你创建的虚拟的一个,以提示xcode构建桥接头。 – AMAN77 2014-10-28 11:18:16