Objective c 在Swift中使用Obj-C类扩展?
我使用Xcode的Objective c 在Swift中使用Obj-C类扩展?,objective-c,swift,bridging-header,Objective C,Swift,Bridging Header,我使用Xcode的addfiles…向我的Swift项目添加了一些Obj-C代码(非常好),但它没有问我是否要制作桥接头。因此,我自己在Obj-C代码组中制作了一个,将其编辑为所需的单个头,并确保该文件在Swift编译器的构建设置中被引用。然后我查看了Obj-C代码,确保.m文件在目标中-它们在目标中,并且在编译源代码中列出 相关标题包含以下内容: @interface NSNumber (Expression) + (NSNumber *)numberByParsingExpression:(
addfiles…
向我的Swift项目添加了一些Obj-C代码(非常好),但它没有问我是否要制作桥接头。因此,我自己在Obj-C代码组中制作了一个,将其编辑为所需的单个头,并确保该文件在Swift编译器的构建设置中被引用。然后我查看了Obj-C代码,确保.m文件在目标中-它们在目标中,并且在编译源代码中列出
相关标题包含以下内容:
@interface NSNumber (Expression)
+ (NSNumber *)numberByParsingExpression:(NSString *)expression;
+ (NSNumber *)numberByParsingExpression:(NSString *)expression withVariables:(NSDictionary *)varDictionary;
@end
现在,我尝试使用与以下相同的基本语法调用此代码:
以及主题上的几个变体。但它不会编译,“类型'NSNumber'没有成员'numberByParsingExpression'”
我在这里漏了一步吗?根据
您可以通过选择File>New>
文件>(iOS、watchOS、tvOS或OSX)>源>头文件
您需要编辑桥接头文件以公开您的
目标-C代码到您的Swift代码。
在Objective-C桥接头文件中,导入每个Objective-C
要向Swift公开的标题。例如:
在生成设置中,在Swift编译器代码生成中,确保
下的Objective-C桥接标头生成设置具有指向
桥接头文件。路径应该是相对于您的项目的,
类似于在生成中指定Info.plist路径的方式
设置。在大多数情况下,您不需要修改此设置。
此桥接头文件中列出的任何公共Objective-C头
将对斯威夫特可见。Objective-C功能将是
在该目标内的任何Swift文件中自动提供,无需
任何导入语句。将自定义Objective-C代码与相同的
系统类使用的Swift语法
如果您已经正确地执行了此操作,但仍然无法正常工作,请尝试删除项目派生数据,并清理生成项目。根据
您可以通过选择File>New>
文件>(iOS、watchOS、tvOS或OSX)>源>头文件
您需要编辑桥接头文件以公开您的
目标-C代码到您的Swift代码。
在Objective-C桥接头文件中,导入每个Objective-C
要向Swift公开的标题。例如:
在生成设置中,在Swift编译器代码生成中,确保
下的Objective-C桥接标头生成设置具有指向
桥接头文件。路径应该是相对于您的项目的,
类似于在生成中指定Info.plist路径的方式
设置。在大多数情况下,您不需要修改此设置。
此桥接头文件中列出的任何公共Objective-C头
将对斯威夫特可见。Objective-C功能将是
在该目标内的任何Swift文件中自动提供,无需
任何导入语句。将自定义Objective-C代码与相同的
系统类使用的Swift语法
如果您已经正确地执行了此操作,但仍然无法正常工作,请尝试删除项目派生数据,并清理生成项目。好的,这是一个Xcode错误 在组中创建头文件时,实际上会将其物理地放置在源文件夹中。因此,在我的例子中,头是在/project/subproject/.h中创建的,尽管它在Xcode中显示为基本文件夹/project/.h的一部分
所以实际上有两个标题,一个在正确的位置,里面什么都没有,另一个在错误的位置,那就是Xcode中正在编辑的那个。因此,您必须查看文件检查器,以确保它将桥接头放置在正确的位置 好的,这是一个Xcode的小漏洞 在组中创建头文件时,实际上会将其物理地放置在源文件夹中。因此,在我的例子中,头是在/project/subproject/.h中创建的,尽管它在Xcode中显示为基本文件夹/project/.h的一部分
所以实际上有两个标题,一个在正确的位置,里面什么都没有,另一个在错误的位置,那就是Xcode中正在编辑的那个。因此,您必须查看文件检查器,以确保它将桥接头放置在正确的位置 这回答了你的问题吗?这回答了你的问题吗?
let result = NSNumber.numberByParsingExpression(f.1)