objective-c - 如何将此 Swift 行转换为 Objective-C 语法

标签 objective-c swift

需要将其转换为 Objective-C 语法,似乎找不到转换它的方法。

   private class func components(fromDate fromDate: NSDate) -> NSDateComponents! {
        return NSCalendar.currentCalendar().components(NSDate.componentFlags(), fromDate: fromDate)
    }

试过这个:

- (NSDateComponents *) componentsFromDate: (NSDate *) fromDate {
    return [[NSCalendar currentCalendar] componentsFromDate: [NSDate componentFlags] : fromDate];
}

这是之前定义的:

- (NSCalendarUnit *) componentFlags {
    return NSCalendarUnitYear, NSCalendarUnitMonth, NSCalendarUnitDay, NSCalendarUnitWeekOfYear, NSCalendarUnitHour, NSCalendarUnitMinute, NSCalendarUnitSecond, NSCalendarUnitWeekday, NSCalendarUnitWeekdayOrdinal, NSCalendarUnitWeekOfYear;
}

所有这些都在我创建的类别中:

@implementation NSDate (AFDateHelperObjC)
@end

最佳答案

你需要:

- (NSDateComponents *) componentsFromDate: (NSDate *) fromDate {
    return [[NSCalendar currentCalendar] components:[NSDate componentFlags] fromDate:fromDate];
}

NSCalendar 中方法的名称是components:fromDate:

作为类别方法添加到 NSDatecomponentsFlags 方法需要是类方法,而不是实例方法。在类别的.h 和.m 中,将- 更改为+。并且返回类型需要是 NSCalendarUnit,而不是 NSCalendarUnit *。您需要使用按位或将所有标志连接在一起。

+ (NSCalendarUnit) componentFlags {
    return NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekOfYear | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitWeekday | NSCalendarUnitWeekdayOrdinal | NSCalendarUnitWeekOfYear;
}

关于objective-c - 如何将此 Swift 行转换为 Objective-C 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36553872/

相关文章:

iOS:如何在按下按钮时以编程方式在导航栏上添加搜索栏?

objective-c - 带有动画的ios简单条形图

ios - Objective-C 会序列化/恢复具有多个引用的对象会创建重复的对象吗?

objective-c - 在 IOS 中实现 PBEKeySpec 加密

ios - ObserveSingleEvent 返回旧数据

ios - 如何声明继承的内置协议(protocol),以便可以从另一个框架或应用程序导入它?

ios - 如何在我的 Collection View 中显示数据获取和显示之前的事件指示器

iphone - - (BOOL) 应用程序 :(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions was not triggered

objective-c - 奇怪的行为,编译错误 "expected specifier-qualifier list before ' CustomClass'"

swift - 使用 Realm Swift 进行 NSPredicate 过滤