我正在使用他们的MatrixKit框架将Matrix消息传递到我的iOS应用程序中,我通过Cocoapods将其添加到我的项目中。除了最后一个问题外,我一切都可以正常工作:我的 Swift 文件中无法识别提供的方法之一。MXSession.h 文件列出了一种方法:
- (void)start:(void (^)(void))onServerSyncDone
failure:(void (^)(NSError *error))failure NS_REFINED_FOR_SWIFT;
用于启动 MXSession。 我需要从我的 Swift 类调用此方法,我试图遵循无济于事:
session.start({
//success
}, failure: {
//failure
})
编译器抱怨说,当它显然这样做时Value of type 'MXSession' has no member 'start'
。 另外,奇怪的是,我能够在MXSession中访问其他方法,例如:
- (void)resume:(void (^)(void))resumeDone;
以下:
session.resume {
//resumed successfully
}
完美工作。 我对 swift 中的闭包不太满意,我只是犯了语法错误吗? 我已经尝试了一切,但似乎无法使其工作。
好吧,当然,我在发布这个问题的那一刻就解决了它。 显然,NS_REFINED_FOR_SWIFT
宏在方法的开头附加了两个下划线,以便在 swift 中使用。 以下代码编译:
session.__start({
//success
}, failure: { error in
//failure
})