Я создаю проект, использующий библиотеку диаграмм, которую я первоначально нашел при создании приложений для Android под названием MPAndroidCharts. Он был перенесен на 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/Чартс
now I am getting build failure saying "Use of unresolved identifier 'UIBezierPath' did you mean 'NSBezierPath'?"
UIBezierPath
— это класс UIKit, а поскольку UIKit — это платформа iOS, вы можете использовать UIBezierPath
в проектах iOS, но не в проектах 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.
Вы не должны переключаться на NSBeziierPath
, если только вы не переносите свой проект на macOS. Если это то, что вы делаете, то да, вам нужно переключиться, и вам нужно будет прочитать NSBezierPath
документация, чтобы выяснить, как переписать свой код для использования этого API. Вкратце, похоже, вы сможете использовать init(roundedRect:,xRadius:,yRadius:)
с cornerRadius
для последних двух параметров.
Спасибо. Я до сих пор точно не знаю, что произошло. Ни в каких настройках ничего не изменилось, xCode просто испортился, когда открыл проект. Я вышел из xCode и перезапустил его, и он отлично сработал. Почему-то xCode запутался, когда я открыл его, и подумал, что проект предназначен для macOS, а не для iOS. Это было странно.