Post

Replies

Boosts

Views

Activity

Simple ForEach gets dreaded compiler is unable to type-check this expression in reasonable time
I am trying to use a simple ForEach loop to draw circles for a collection of points. I am flabbergasted that the compiler borks on something so simple, so I suspect a bug in my code, but I cannot see it. This is all done within a View in a GeometryReader in which I have several let constants that compute correct positions. If I do the following, it works, but the circles are all bunched on the left side of the view since the position is not scaled properly:     let points: [CGPoint] = curve.makePoints()    // Text("  \(points[0].x),  \(points[0].y)  \(points[1].x), \(points[1].y)")     ForEach(points, id: \.self.x) { point in       Circle() .position(point)         .frame(width: shapeSize, height: shapeSize) } The commented out Text did show the correct values of the first two points. However, if I scale the position to where I want it to be, as below, I get the dreaded error. The only change between code that builds and runs and the code that breaks the compiler are in these two code blocks.     ForEach(points, id: \.self.x) { point in       var nnextX: Double = xOffset + pixWidth * ((point.x - xminRounded) / xtot)       var nnextY: Double = Double(proxy.size.height) - yOffset - pixHeight * ((points.y - yminRounded) / ytot)       var nextPoint:CGPoint = CGPoint(x: nnextX, y: nnextY)       Circle()          .position(nextPoint)        // .position(point)         .frame(width: shapeSize, height: shapeSize) } I know the point.x value is unique so I can use it as the id: I know the logic for computing "nnextX" and "nnextY" are correct since when I used very similar computations in a Path { path in ...               for i in 1..<curve.xValues.count {                 let nextX: Double = xOffset + pixWidth * ((curve.xValues[i] - xminRounded) / xtot)                 let nextY: Double = Double(proxy.size.height) - yOffset - pixHeight * ((curve.yValues[i] - yminRounded) / ytot)                 let nextPoint:CGPoint = CGPoint(x: nextX, y: nextY)                 path.addLine(to: nextPoint)               } All the lines were drawn in the proper place in my View. Finally, the developer documentation shows 3 ways to initialize a CGPoint: with a Double, with an Int, or with a CGFloat, so I should be good there. Any ideas?
4
0
331
Jan ’22
How to reset macOS SwiftUI NavigationView settings for app?
When I create a simple app in macOS with a navigationView, each time I run the app, it remembers the settings I made last time I ran it. For example, the spacing of the sidebar/content boundary. How do I reset it to original values? For example, if I grab the divider and pull it left until it disappears, I cannot ever get the sidebar back. How can I get it back? I see the sidebar in preview and live preview, but not in the app after I modify the app as described above. I did Clean Build Folder, restarted Xcode, restarted my iMac but nothing helped. macOS 11.6, Xcode 13.0 import SwiftUI struct ContentView: View {     var body: some View {         NavigationView {         Text("Sidebar")         Text("Content")             .padding()         }     } }
1
0
775
Oct ’21