我正在构建一个使用图表库的项目,该图表库是我在构建名为MPAndroidCharts的android应用程序时最初发现的。它已被移植到iOS / Swift,并且运行良好。我遇到了一个奇怪的问题。星期五,当我离开工作时,项目运行良好,我在每天结束时和每天开始时对应用程序进行测试,不知道为什么,这就是我的工作方式。因此,在星期五下班时是在工作,今天我进来打开该项目并尝试进行构建,现在我遇到了构建失败的问题,说“使用未解析的标识符'UIBezierPath',您是指'NSBezierPath'?”我没有更新系统上的任何内容,代码库中也没有任何变化,但是现在无法构建。

当我尝试将其更新为NSBezierPath时,我遇到了很多其他错误,因为它在构造函数中没有相同的参数,而且我不确定100%如何将其转换为NSBezierPath。我的构造函数很简单(ish)...

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

最佳答案

现在,我收到构建失败的消息,说“使用未解析的标识符'UIBezierPath',您是说'NSBezierPath'吗?”
UIBezierPath是UIKit类,并且由于UIKit是iOS框架,因此您可以在iOS项目中使用UIBezierPath,但不能在macOS项目中使用。 NSBezierPath是AppKit类,而AppKit是macOS框架,因此您可以在macOS上使用它,但不能在iOS上使用它。

如果Xcode提供了NSBezierPath作为替代方案,那么听起来您已经以某种方式将目标切换为针对macOS而不是iOS进行构建。进行检查,并检查您的项目是否与UIKit链接。

当我尝试将其更新为NSBezierPath时,我遇到了很多其他错误,因为它在构造函数中没有相同的参数,而且我不确定100%如何将其转换为NSBezierPath。

除非要将项目移植到macOS,否则不要切换到NSBeziierPath。如果您正在执行此操作,则是的,您需要进行切换,并且需要阅读the NSBezierPath documentation以弄清楚如何重写代码以使用该API。简而言之,看起来您应该能够将 init(roundedRect:,xRadius:,yRadius:) cornerRadius用作最后两个参数。

关于ios - 使用未解析的标识符“UIBezierPath”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56347960/

10-10 23:57