【发布时间】:2015-02-26 22:55:39
【问题描述】:
我有一个现有的Objective-C SDK (AugmentedKit SDK)。我正在尝试将它与Swift 一起使用。 AugmentedKit SDK 有一个名为“AKSurfaceView”的类,它实现了对“AKViewDataSource”协议的委托。
@class AKSurfaceView;
@protocol AKViewDataSource;
@protocol AKViewDelegate<AKViewDataSource>
AKViewDataSource 如下所示:
@protocol AKViewDataSource<NSObject>
@required
-(AKMarkerTemplate*) viewforMarker:(AKMarker*) marker;
我创建了一个 briging 文件,实现了 AKSurfaceView 的其他方法等 - 一切正常,但是当我尝试将 AKViewDelegate 的引用添加到我的 UIViewControllerClass 时,它以编译错误结束:
“类型POIViewController不符合协议'AKViewDataSource'”
我的实现如下所示:
class POIViewController: UIViewController, AKViewDelegate {
我在 SWIFT 中的“viewforMarker”实现如下所示:
func viewforMarker(marker:AKMarker) -> AKMarkerTemplate{
var markerView:SimpleMarker = SimpleMarker(frame: CGRectMake(0, 0, 230, 80))
markerView.title.text = marker.markerName
return markerView
}
请任何人帮助我弄清楚我必须如何实现“viewforMarker”以便代表识别它?
【问题讨论】:
-
SimpleMarker 是 AKMarkerTemplate 吗?
-
是的,SimpleMarker 是一个 AKMarkerTemplate
-
我试过你的代码,它编译得很好(考虑到所有必须考虑的东西)。
-
我建议你做的就是我所做的——制作一个由只是这些声明组成的简单项目。你会看到它编译得很好。现在您可以找出实际项目中的问题所在。
-
通常您需要将返回的对象质量作为可选项,因为现在对于 ObjC 例程返回 nil 是完全合法的。例如: func viewforMarker(marker:AKMarker!) -> AKMarkerTemplate! (注意 '!'s)
标签: ios objective-c swift delegates augmented-reality