最近,当我尝试将一个CLLocation数组从Objective-c模块传递给Swift时,我得到了:
致命错误:NSArray元素无法与Swift数组元素匹配 型
这就是我调用函数的方式:
routeLine = [PreloadedLine lineWithLoadedPath:preloadedPath
key:lineKey
andNotification:(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)];
这是函数的Swift签名:
class func lineWithLoadedPath(path: [CLLocation]?,
key:String?,
andNotification notification:Bool)->Line?
这是它的Objective-c签名:
+ (Line * __nullable)lineWithLoadedPath:(NSArray<CLLocation *> * __nullable)path
key:(NSString * __nullable)key
andNotification:(BOOL)notification;
答案 0 :(得分:0)
相信错误信息。不是CLLocation的东西正在进入NSArray。
所以,在Objective-C方面,你说:
[PreloadedLine lineWithLoadedPath:preloadedPath ...
...但是preloadedPath
是一个NSArray,其中的内容并非所有CLLocations,所以在Swift方面,应用程序会崩溃。
答案 1 :(得分:0)
我还将后一类移植到Swift及其层次结构中,这个问题本身就消失了。