我有一个在Date扩展时创建的静态方法。我试图在Objective-C文件中调用此方法。我收到错误为“选择器方法名称没有已知的类”。
更多细节:
在SWIFT 3.0中
extension Date {
static func getDefaultFormattedDateStringFromDate(_ validToDate:Date) -> String? {
}
}
在Objective-C
中NSString *dateString = [NSDate getDefaultFormattedDateTimeStringFromDate:[NSDate date]];
答案 0 :(得分:2)
struct Date
是" Swift叠加类型"到基金会类型
NSDate
(比较Swift 3: Date vs NSDate?)和未知的Objective-C。
您必须按顺序定义NSDate
的扩展名
可以从Objective-C中使用:
extension NSDate {
static func getDefaultFormattedDateStringFromDate(_ validToDate: Date) -> String? {
// ...
}
}
将其导入Objective-C
@interface NSDate
+ (NSString * _Nullable)getDefaultFormattedDateStringFromDate:(NSDate * _Nonnull)validToDate;
@end
请注意,参数和返回类型(Date
,String
)会自动桥接到基础类型(NSDate
,NSString
)。
所有这些与静态(类型)和实例方法无关,并且在 你的情况可能更多"自然"定义一个实例 方法:
extension NSDate {
func defaultFormattedString() -> String? {
// ...
}
}
以
的形式导入Objective-C@interface NSDate
- (NSString * _Nullable)defaultFormattedString;
@end
并称为
NSString *dateString = [[NSDate date] defaultFormattedString];