Mapbox: как установить цвет заливки слоя с помощью выражения MGL_MATCH
Я пытаюсь установить цвет заливки отдельных объектов в слое карты Mapbox с помощью выражения MGL_MATCH, но продолжаю получать:
*** Завершение работы приложения из-за необработанного исключения "NSInvalidArgumentException", причина: '-[__NSCFString mgl_color]: нераспознанный селектор отправлен в экземпляр...
func mapViewDidFinishLoadingMap(_ mapView: MGLMapView) {
let layer = mapView.style!.layer(withIdentifier: "powiaty-1") as! MGLFillStyleLayer
let source = mapView.style!.source(withIdentifier: "composite") as! MGLVectorTileSource
let features = source.features(sourceLayerIdentifiers: NSSet(object: "powiaty") as! Set<String>, predicate: nil);
let query = NSMutableString(format: "MGL_MATCH(jpt_kod_je, ");
for feature in features {
let code = feature.attribute(forKey: "jpt_kod_je") as! String
let color = code.prefix(2) == "06" ? UIColor.red : UIColor.white;
query.appendFormat("%@, %@, ", code, color)
}
query.appendFormat("%@)", UIColor.white);
print(query);
layer.fillColor = NSExpression(format: "%@", query);
}
Ожидаемые результаты:
Объекты, чей 4-значный код (свойство jpt_kod_je: String) начинается с "06", чтобы быть заполненным красным, все остальные белым.
Фактические результаты:
Crash with the stack:
0 CoreFoundation 0x0000000106f456fb __exceptionPreprocess + 331
1 libobjc.A.dylib 0x00000001064e9ac5 objc_exception_throw + 48
2 CoreFoundation 0x0000000106f63ab4 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3 CoreFoundation 0x0000000106f4a443 ___forwarding___ + 1443
4 CoreFoundation 0x0000000106f4c238 _CF_forwarding_prep_0 + 120
5 Mapbox 0x000000010575d629 _ZN24MGLStyleValueTransformerIN4mbgl5ColorEU8__strongP7UIColorS1_S4_E15toPropertyValueINS0_5style13PropertyValueIS1_EEEENSt3__19enable_ifIXntsr3std7is_sameIT_NS7_22ColorRampPropertyValueEEE5valueESC_E4typeEP12NSExpressionb + 257
6 Mapbox 0x000000010582845e -[MGLFillStyleLayer setFillColor:] + 123
7 MapboxExpressions 0x0000000105443eb3 $s17MapboxExpressions14ViewControllerC03mapC19DidFinishLoadingMapyySo06MGLMapC0CF + 4867 ...