我正在构建一个项目,该项目使用我最初在构建名为 MPAndroidCharts 的 Android 应用程序时发现的图表库。它已被移植到 iOS/Swift 并且运行良好。我遇到了一个奇怪的问题。星期五,当我下类时,该项目运行良好,我在每天结束时和每天开始时测试应用程序,不知道为什么,这就是我的做法。所以我下类的时候是星期五,我今天进来打开项目并尝试构建它,现在我遇到构建失败,提示“使用未解析的标识符‘UIBezierPath’,你是说‘NSBezierPath’吗?”我没有更新系统上的任何内容,代码库中也没有任何更改,但现在无法构建。
当我尝试将它更新为 NSBezierPath 时,我遇到了一堆其他错误,因为它在构造函数中没有相同的参数,而且我不是 100% 确定如何将它转换为 NSBezierPath。我的构造函数很简单(大概)...
let bezierPath = UIBezierPath(roundedRect: barRect, byRoundingCorners: UIRectCorner.allCorners, cornerRadii: CGSize(width: cornerRadius, height: cornerRadius))
let roundedPath = bezierPath.cgPath
当我更新到 NSBezierPath 时,我收到有关 UIRectCorner 需要是 NSRectPointer 的错误,它没有“.allCorners”,然后构造函数完全错误并且无法构建。
我试图让这不太笼统,因为我知道这很糟糕,但我不知道如何修复它,或者为什么它在周末神奇地变得无法解决而没有我更新 xCode 或我的代码库,或者任何关联的库。任何帮助将不胜感激。如果您需要它,图表库的链接是... https://github.com/danielgindi/Charts
最佳答案
now I am getting build failure saying "Use of unresolved identifier 'UIBezierPath' did you mean 'NSBezierPath'?"
UIBezierPath
是一个 UIKit 类,由于 UIKit 是一个 iOS 框架,您可以在 iOS 项目中使用 UIBezierPath
,但不能在 macOS 项目中使用。 NSBezierPath
是一个 AppKit 类,而 AppKit 是一个 macOS 框架,所以你可以在 macOS 上使用它,但不能在 iOS 上使用。
如果 Xcode 提供 NSBezierPath
作为替代方案,那么听起来您已经以某种方式将目标切换为针对 macOS 而不是 iOS 构建。检查一下,并检查您的项目是否链接到 UIKit。
When I try to update it to NSBezierPath I get a bunch of other errors because it doesn't have the same arguments in the constructor and I am not 100% sure how to convert it over to NSBezierPath.
除非您将项目移植到 macOS,否则不应切换到 NSBeziierPath
。如果那是你正在做的,那么是的,你需要切换,你需要阅读 the NSBezierPath
documentation弄清楚如何重写代码以使用该 API。简而言之,看起来您应该能够使用 init(roundedRect:,xRadius:,yRadius:)
最后两个参数使用 cornerRadius
。
关于ios - 使用未解析的标识符 'UIBezierPath',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56347960/