gpt4 book ai didi

objective-c - 如何在扩展中定义的 objective-c 中使用静态方法

转载 作者:可可西里 更新时间:2023-11-01 01:28:11 24 4
gpt4 key购买 nike

我在 Date 的扩展上创建了一个静态方法。我试图在 Objective-C 文件中调用这个方法。我收到错误消息“选择器方法名称没有已知类”。

更多细节:

在 SWIFT 3.0 中

extension Date {
static func getDefaultFormattedDateStringFromDate(_ validToDate:Date) -> String? {

}
}

在 Objective-C 中

NSString *dateString = [NSDate getDefaultFormattedDateTimeStringFromDate:[NSDate date]];

最佳答案

struct Date 是 Foundation 类型的“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

请注意,参数和返回类型(DateString)会自动桥接到基础类型(NSDateNSString )。


所有这些都与静态(类型)与实例方法无关,并且在你的情况定义一个实例可能更“自然”方法:

extension NSDate {
func defaultFormattedString() -> String? {
// ...
}
}

导入到 Objective-C 作为

@interface NSDate
- (NSString * _Nullable)defaultFormattedString;
@end

并称为

NSString *dateString = [[NSDate date] defaultFormattedString];

关于objective-c - 如何在扩展中定义的 objective-c 中使用静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40212780/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com