Open mfazekas opened 4 years ago
I am also able to reproduce this.
layer.lineColor = NSExpression(mglJSONObject: [
"case",
["all", true, false],
UIColor(red: 59/255, green: 178/255, blue: 208/255, alpha: 1),
// comment these two line below and it does not crash
["all", 1, 2],
UIColor.blue,
UIColor.red
])
It should evaluate the expression and not crash the app.
It crashes the app.
Comment out these two lines https://github.com/mapbox/ios-sdk-examples/commit/1745fe56de03da41b9a364a934f868f49bb8f3ec#diff-2450e949bfb839d24a2060f5d371c56aR75-R77 and repeat the reproduce steps. This does not crash the app.
lineColor
, lineWidth
if-then
scenario within the case
Is there another way of writing this?
Not sure why case
is not supported when nested but it's recommended to use TERNARY
or MGL_IF
(link) Some top level functions are broken and TERNARY should work according to here. So using TERNARY, it would look like:
TERNARY(
true = false,
%@,
%@
)
And a workaround implementation would be:
layer.lineColor = NSExpression(format:
"""
TERNARY(
true = false,
TERNARY(
1 = 2,
%@,
%@
),
TERNARY(
2 = 2,
%@,
%@
)
)
""", UIColor.blue, UIColor.purple, UIColor.red, UIColor.orange)
Steps to reproduce
The following code crashes, at setting lineOpacity
Seet this gist for full view controller.
Expected behavior
No crash.
Actual behavior
Crash.
The logged expression:
stack
Configuration
Mapbox SDK versions:5.9.0 iOS/macOS versions:13.3 Device/simulator models:iPhone SE(2nd generation) simulator Xcode version:11.5