我正在使用Swift metawear(mbientlab.com)项目,并且所有代码示例都在Objective C中,因此必须进行大量转换。根据这一博客帖子 - http://projects.mbientlab.com/persistent-events-and-filters/ - 我创建了下面的类,从MBLRestorable(它实现NSCoder协议)继承:将目标C alloc init转换为需要参数的swift
class DeviceConfiguration:NSObject, MBLRestorable {
var pulseWithEvent:MBLEvent!
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(self.pulseWithEvent, forKey: "pulseWithEvent")
}
required init(coder aDecoder: NSCoder) {
super.init()
self.pulseWithEvent = aDecoder.decodeObjectForKey("pulseWithEvent") as MBLEvent
}
}
到目前为止好。现在我下面的目标C转换为斯威夫特:
[self.device setConfiguration:[[DeviceConfiguration alloc] init] handler:^(NSError *error) {
if (!error) {
// Programming successful!
}
}];
我尝试:
self.device.setConfiguration(MetawearConfig()) { error in
}
但得到一个错误,它缺少必需的参数“编码器”。对我来说,它需要初始化参数,但在Objective C示例代码/应用程序中,编码器obj永远不会传入(并且编译器不会引发相同的错误)。
的声明setConfiguration是:
- (void)setConfiguration:(id<MBLRestorable>)configuration handler:(MBLErrorHandler)handler;
什么我失踪?
你可以显示'self.device.setConfiguration'的签名 –
我刚刚添加了签名。 –