尝试在 Here Explore for iOS 中为地图标记创建 MapImage 实例会出现奇怪的错误
Trying to create MapImage instance for map marker in Here Explore for iOS is giving a weird error
init(coordinates: GeoCoordinates, image: UIImage) {
let pngData = image.pngData()
let mapImage = MapImage(pixelData: pngData!, imageFormat: ImageFormat.png)
print("i did print")
self.mapMarker = MapMarker(at: coordinates, image: mapImage)
}
这是错误信息-
dyld4 config: DYLD_LIBRARY_PATH=/usr/lib/system/introspection
DYLD_INSERT_LIBRARIES=/Developer/usr/lib/libBacktraceRecording.dylib:/Developer/usr/lib/libMainThreadChecker.dylib:/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib:/usr/lib/libMTLCapture.dylib
terminating with uncaught exception of type std::runtime_error: SDK
engine is null. Please provide a valid object.
调用 MapImage 构造函数时,pngData 不是 nil 值,我通过打印检查了它。这个错误是什么意思,我该如何解决?
这是我自己想出来的。问题的症结在于,在创建 MapImage 实例之前,需要初始化 HereSDK 引擎,这可以通过两种方式完成-
初始化 MapView,后者又初始化 HereSDK 引擎,但在我的例子中,此初始化发生在 MapImage 实例初始化语句之后。
在 MapImage 实例初始化语句之前显式初始化引擎。
做{
试试 SDKInitializer.initializeIfNecessary()
} 抓住 {
fatalError("未能初始化 HERE SDK。原因:(error)")
}
这也可以在 AppDelegate 文件中完成。
init(coordinates: GeoCoordinates, image: UIImage) {
let pngData = image.pngData()
let mapImage = MapImage(pixelData: pngData!, imageFormat: ImageFormat.png)
print("i did print")
self.mapMarker = MapMarker(at: coordinates, image: mapImage)
}
这是错误信息-
dyld4 config: DYLD_LIBRARY_PATH=/usr/lib/system/introspection DYLD_INSERT_LIBRARIES=/Developer/usr/lib/libBacktraceRecording.dylib:/Developer/usr/lib/libMainThreadChecker.dylib:/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib:/usr/lib/libMTLCapture.dylib terminating with uncaught exception of type std::runtime_error: SDK engine is null. Please provide a valid object.
调用 MapImage 构造函数时,pngData 不是 nil 值,我通过打印检查了它。这个错误是什么意思,我该如何解决?
这是我自己想出来的。问题的症结在于,在创建 MapImage 实例之前,需要初始化 HereSDK 引擎,这可以通过两种方式完成-
初始化 MapView,后者又初始化 HereSDK 引擎,但在我的例子中,此初始化发生在 MapImage 实例初始化语句之后。
在 MapImage 实例初始化语句之前显式初始化引擎。
做{ 试试 SDKInitializer.initializeIfNecessary() } 抓住 { fatalError("未能初始化 HERE SDK。原因:(error)") }
这也可以在 AppDelegate 文件中完成。