Swift에서 Objective-C 코드 샘플을 다시 작성하려고합니다. 이 코드는 기본적으로 Objective-C로 작성된 CorePlot을 사용하여 그래프를 그립니다 (샘플은 여기에 있음 ). 다음은 원래 Objective-C 코드의 일부입니다.
CPTMutablePlotRange *xRange = [plotSpace.xRange mutableCopy];
[xRange expandRangeByFactor:CPTDecimalFromCGFloat(1.1f)];
다음과 같이 다시 작성합니다.
var xRange = plotSpace.plotRangeForCoordinate(CPTCoordinate.X).mutableCopy() as CPTMutablePlotRange;
xRange.expandRangeByFactor(NSDecimalNumber(1.1))
이 시점에서 " CPTMutablePlotRage does not have a member named 'expandRangeByFactor'
" 라는 컴파일 오류가 발생했습니다 . 내가 뭘 잘못했는지 아는 사람 있나요? Objective-C 코드에서 확인한 결과 CTMutablePotRange에는 expandRangeByFactor.
Thanks 라는 메서드가 확실히 있습니다 .
expandRangeByFactor
존재하지만 NSDecimal을 사용합니다. 동일한 것이 아닌 NSDecimalNumber를 제공하려고합니다. (이 상황과 관련이 없지만 여전히 문제가되는 코드의 또 다른 문제는라고 말할 수 없다는 것 NSDecimalNumber(1.1)
입니다. 이러한 이니셜 라이저는 없습니다.)
여기에 NSDecimal 매개 변수를 전달해야합니다. 이것이 원래 Objective-C 코드 CPTDecimalFromCGFloat()
가 여기에 들어가는 NSDecimal을 생성하기 위해 Core Plot 함수를 호출하는 이유 입니다.
그러나 Swift에서는 NSDecimal에 대해 모르기 때문에 그렇게 할 수 없습니다. 따라서 Swift는 처리 할 수없는 유형의 값을 취하는 메소드를 볼 수 없기 때문에 사용자가 무엇을하든이 메소드를 볼 수 없습니다.
Core Plot 사람들은이 문제를 알고 있습니다. https://github.com/core-plot/core-plot/issues/96 참조 새 release-2.0
분기에는 수정 사항이 포함되어 있습니다. 여기 에서 볼 수 있듯이 새 API에서는 NSNumber를 expandRangeByFactor
.
업데이트 : Swift 1.2 (Xcode 6.3 이상에서 사용 가능)는 NSDecimal을 처리 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다