从Objective-c传递CLLLocation数组会导致崩溃

时间:2016-03-12 21:28:19

标签: objective-c arrays swift nsarray

最近,当我尝试将一个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;

2 个答案:

答案 0 :(得分:0)

相信错误信息。不是CLLocation的东西正在进入NSArray。

所以,在Objective-C方面,你说:

 [PreloadedLine lineWithLoadedPath:preloadedPath ...

...但是preloadedPath是一个NSArray,其中的内容并非所有CLLocations,所以在Swift方面,应用程序会崩溃。

答案 1 :(得分:0)

我还将后一类移植到Swift及其层次结构中,这个问题本身就消失了。