我正在尝试将以下开源 Objective C 代码转换为 swift,但我很难理解此类函数想要实现的目标。我知道它是一个类方法,我在底部添加了我重写的内容。
+ (instancetype)eventWithTitle:(NSString *)title day:(NSUInteger)day startHour:(NSUInteger)startHour durationInHours:(NSUInteger)durationInHours
{
return [[self alloc] initWithTitle:title day:day startHour:startHour durationInHours:durationInHours];
}
如果有帮助的话,这是它引用的方法。
- (instancetype)initWithTitle:(NSString *)title day:(NSUInteger)day startHour:(NSUInteger)startHour durationInHours:(NSUInteger)durationInHours
{
self = [super init];
if (self != nil) {
_title = [title copy];
_day = day;
_startHour = startHour;
_durationInHours = durationInHours;
}
return self;
}
Swift 版本
class func eventWithTitle(title: String, day: UInt32, startHour: UInt32, durationInHours: UInt32) {
self.init(title: title, day: day, startHour: startHour, durationInHours: durationInHours)
}
init(title: String, day: UInt32, startHour: UInt32, durationInHours: UInt32) {
self.title = title
self.day = day
self.startHour = startHour
self.durationInHours = durationInHours
}
运行此代码时出现的错误如下:
Result of initializer is unused.
最佳答案
来自文档:
Class Factory Methods and Convenience Initializers
For consistency and simplicity, Objective-C class factory methods are imported as convenience initializers in Swift. This allows them to be used with the same syntax as initializers.
这意味着,只有方便的初始化器,工厂方法被删除。
init(title : String, day : Int, startHour : Int, durationInHours : Int)
关于objective-c - 下面的类函数试图实现什么目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34685192/