我正在尝试将以下的开源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
}
运行此代码时出现的错误如下:
初始化程序的结果未使用。
答案 0 :(得分:2)
来自文档:
类工厂方法和便利初始化程序
为了一致性和简单性,Objective-C类工厂方法是 在Swift中作为便利初始化器导入。这允许他们 使用与初始化程序相同的语法。
这意味着,只有便利初始化程序,工厂方法被删除。
init(title : String, day : Int, startHour : Int, durationInHours : Int)
答案 1 :(得分:-1)
它基本上只是一种工厂方法。正如您在Objective-C版本中注意到的那样,从该方法返回alloc' d / init< d'd实例。因此,您希望将Swift功能更改为:
ssh user@45.12.129 "cd ~/scripts; pwd; ./startVM.sh"