我正在尝试将我的应用程序从Objective C迁移到swift。 我有几个Objective C类别。由于Swift有“扩展”,我已经创建了它。但有些如何,我无法从现有的Objective C中调用它。
下面的代码给出了编译错误
No visible @interface for 'NSString' declares the selector 'myCategory'
扩展类
import Foundation
extension String {
func myCategory() -> String {
return "I am From Swift";
}
}
我的ViewController
#import <TestProject-Swift.h>
@interface TestViewController ()
@end
@implementation TestViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSString *str = @"Testing";
NSLog(@"Here is result %@", [str myCategory]);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
它如何与Swift类一起使用? 我也为上面的扩展文件创建了Bridging头文件。
编辑: 我试过制作“公开”,但它不起作用。
答案 0 :(得分:1)
你有正确的想法,但Swift的String
和Cocoa的NSString
是两种不同的类型。你不知道这一点的原因是,感谢一些魔法,Swift很高兴在NSString
上调用String
方法让你的生活更轻松。将您的扩展程序设为NSString
而不是String
,它应该适用于两种情况。