我正在尝试扩展一个用Obj-C编写的类,并包含一个用Swift编写的扩展,使其符合UIDropInteractionDelegate
,如下所示:
@available(iOS 11.0, *)
extension NoteEditViewController: UIDropInteractionDelegate {
@available(iOS 11.0, *)
public func dropInteraction(_ interaction: UIDropInteraction, sessionDidUpdate session: UIDropSession) -> UIDropProposal {
let operation: UIDropOperation
if session.localDragSession == nil {
operation = .forbidden
} else {
// If a local drag session exists, we only want to move an
// existing item in the pin board to a different location.
operation = .forbidden
}
return UIDropProposal(operation: operation)
}
@objc(setupDropInteractions)
@available(iOS 11.0, *)
func setupDropInteractions() {
// Add drop interaction
self.view.addInteraction(UIDropInteraction(delegate: self))
}
}
我的问题是Project_Name-Swift.h
文件包含以下代码,无法编译:
@class UIDropInteraction;
@protocol UIDropSession;
@class UIDropProposal;
// This line is causing the issue saying "'UIDropInteractionDelegate' is partial: introduced in iOS 11.0"
@interface NoteEditViewController (SWIFT_EXTENSION(Bloomberg_Professional)) <UIDropInteractionDelegate>
- (UIDropProposal * _Nonnull)dropInteraction:(UIDropInteraction * _Nonnull)interaction sessionDidUpdate:(id <UIDropSession> _Nonnull)session SWIFT_WARN_UNUSED_RESULT SWIFT_AVAILABILITY(ios,introduced=11.0);
- (void)setupDropInteractions SWIFT_AVAILABILITY(ios,introduced=11.0);
@end
编译器投诉文件中的接口是部分的。
我认为包含'UIDropInteractionDelegate' 是部分的:在 iOS 11.0 中引入。
@available(iOS 11.0, *)
将会生成一个 SWIFT_AVAILABILITY(ios,introduced=11.0)
来封装整个接口,但我错了。有什么方法可以解决这个问题吗? 更新
我实现了一个玩具示例。
这里是玩具 ViewController: 这是 Swift 扩展: 这是生成的 dnd_toy-Swift.h 文件。 你说得对,这只是一个警告,但我的问题是我们必须将所有警告视为错误来处理我们的项目。
有没有什么办法可以从这里消除这个警告?