什么';在Swift中使用Objective-C类别的正确方法是什么?
我正试图在没有任何运气的情况下将一些分类方法导入到我的Swift文件中 ios桥接头.h:什么';在Swift中使用Objective-C类别的正确方法是什么?,swift,xcode6,Swift,Xcode6,我正试图在没有任何运气的情况下将一些分类方法导入到我的Swift文件中 ios桥接头.h: #import "UIColor+Hex.h" UIColor+Hex.h #import <UIKit/UIKit.h> @interface UIColor (Hex) + (UIColor *)colorWithHex:(NSUInteger)hexInt; + (UIColor *)colorWithHexString:(NSString *)hexString; @end
#import "UIColor+Hex.h"
UIColor+Hex.h
#import <UIKit/UIKit.h>
@interface UIColor (Hex)
+ (UIColor *)colorWithHex:(NSUInteger)hexInt;
+ (UIColor *)colorWithHexString:(NSString *)hexString;
@end
#导入
@界面颜色(十六进制)
+(UIColor*)colorWithHex:(NSUInteger)hexInt;
+(UIColor*)colorWithHexString:(NSString*)hexString;
@结束
我希望自动完成将显示
UIColor(hexInt:NSUInteger)
和UIColor(hexString:String)
实际上,您的类别被转换为Swift,如下所示:
extension UIColor {
init(hex hexInt: Int) -> UIColor
init(hexString: String) -> UIColor
}
因此,您应该使用:
let color = UIColor(hex: 0xffffff) // instead of hexInt:
let color = UIColor(hexString: "ffffff")
不过,测试版软件中的自动完成功能可能仍然存在缺陷。您可以在Swift中直接使用Objective-C类别。这对于一些桥接类来说非常有趣,比如String。使用Objective-C中的类别扩展NSString,然后您可以从Swift访问它(直接在String上!) 方法是在Swift项目中创建一个“桥接头” 完整的说明 其缺点是:
#import
语句Objective-C桥接头中
关于您的代码,我有几个问题:在桥接头中,它不应该是“#import”而不是“import”吗?你写了哪一行最后在Swift中导入了你的分类?是的,我的问题是打字错误。下面我接受的代码对我很有效!请看下面我的新答案。基本上,您需要一个桥接头:我正在尝试使用NSAttributedString扩展名(cocopods),我也在桥接头文件中添加了它们,但问题与您的相同。我希望autocomplete能够揭示这些方法,但事实并非如此。。我使用的Pods来自:谢谢,但问题是这个类别在所有swift文件中都是可用的,但是在ObjC中我们可以在实际存在的文件中使用required@MayankJain更重要的是,在Objective-C中,您可以在具有相似方法名称的不同类别之间进行选择。然而,这可能是一个射中你自己脚的好方法。。。也许斯威夫特最终会站在这件事的正确一边。@DanRosenstark同意了。。。!!!在我的一个项目中,我要求导入特定文件中的类别文件,我希望其他文件应使用原始实现,并且只有特定文件才能使用自定义类别。类别是用ObjC写的。3年后。。。自动完成仍然有缺陷。