Swift에서 Objective-C 메서드를 호출 할 수 없습니다.

Trungdinhtrong

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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Objective-c에서 일부 Swift 함수를 호출 할 수 없습니다 (다른 기능은 작동 함).

분류에서Dev

다른 Objective-C 클래스에서 메서드를 어떻게 호출 할 수 있습니까?

분류에서Dev

Rails에서 Delete 메서드를 호출 할 수 없습니다.

분류에서Dev

Python에서 메서드를 호출 할 수 없습니다.

분류에서Dev

C #에서 void main에서 보호 된 메서드를 호출 할 수 없습니다.

분류에서Dev

C ++에서는 기본 클래스에서 공용 메서드를 호출 할 수 없습니다.

분류에서Dev

C DLL에서 함수를 호출 할 수 없습니다.

분류에서Dev

Unity에서 메서드를 호출하려고합니다. 메서드를 호출 할 수 없습니다.

분류에서Dev

왜 hasPrevious () 메서드를 직접 호출 할 수 없습니다

분류에서Dev

null의 'drawImage'메서드를 호출 할 수 없습니다.

분류에서Dev

null의 'apply'메서드를 호출 할 수 없습니다.

분류에서Dev

개체 메서드를 호출 할 수 없습니다.

분류에서Dev

NFC onNewIntent () 메서드를 호출 할 수 없습니다.

분류에서Dev

Iqueryable은 Include 메서드를 호출 할 수 없습니다.

분류에서Dev

대리자 메서드를 호출 할 수 없습니다.

분류에서Dev

JAVA-배열 메서드를 호출 할 수 없습니다.

분류에서Dev

angularjs bindToController는 메서드를 호출 할 수 없습니다.

분류에서Dev

C # consoleApp은 별도의 클래스에서 정적 메서드를 호출 할 수 없습니다.

분류에서Dev

메소드에서 Java 호출 메소드를 이해할 수 없습니다.

분류에서Dev

함수 내부에서 메서드를 호출 할 수 없습니다.

분류에서Dev

비즈니스 계층에서 메서드를 호출 할 수 없습니다.

분류에서Dev

비즈니스 계층에서 메서드를 호출 할 수 없습니다.

분류에서Dev

Main ()에서 메서드를 호출 할 수 없습니까?

분류에서Dev

메서드는 AJAX에서만 호출 할 수 없습니다.

분류에서Dev

클래스의 메서드 C #을 호출 할 수 없습니다.

분류에서Dev

초기화 전에 draggable에서 메서드를 호출 할 수 없습니다.

분류에서Dev

C # DLL에서 http 호출을 할 수 없습니다.

분류에서Dev

SYSPRO의 VBscript에서 C # dll을 호출 할 수 없습니다.

분류에서Dev

Clojure에서 특정 Java 메서드를 호출 할 수 없습니다.

Related 관련 기사

  1. 1

    Objective-c에서 일부 Swift 함수를 호출 할 수 없습니다 (다른 기능은 작동 함).

  2. 2

    다른 Objective-C 클래스에서 메서드를 어떻게 호출 할 수 있습니까?

  3. 3

    Rails에서 Delete 메서드를 호출 할 수 없습니다.

  4. 4

    Python에서 메서드를 호출 할 수 없습니다.

  5. 5

    C #에서 void main에서 보호 된 메서드를 호출 할 수 없습니다.

  6. 6

    C ++에서는 기본 클래스에서 공용 메서드를 호출 할 수 없습니다.

  7. 7

    C DLL에서 함수를 호출 할 수 없습니다.

  8. 8

    Unity에서 메서드를 호출하려고합니다. 메서드를 호출 할 수 없습니다.

  9. 9

    왜 hasPrevious () 메서드를 직접 호출 할 수 없습니다

  10. 10

    null의 'drawImage'메서드를 호출 할 수 없습니다.

  11. 11

    null의 'apply'메서드를 호출 할 수 없습니다.

  12. 12

    개체 메서드를 호출 할 수 없습니다.

  13. 13

    NFC onNewIntent () 메서드를 호출 할 수 없습니다.

  14. 14

    Iqueryable은 Include 메서드를 호출 할 수 없습니다.

  15. 15

    대리자 메서드를 호출 할 수 없습니다.

  16. 16

    JAVA-배열 메서드를 호출 할 수 없습니다.

  17. 17

    angularjs bindToController는 메서드를 호출 할 수 없습니다.

  18. 18

    C # consoleApp은 별도의 클래스에서 정적 메서드를 호출 할 수 없습니다.

  19. 19

    메소드에서 Java 호출 메소드를 이해할 수 없습니다.

  20. 20

    함수 내부에서 메서드를 호출 할 수 없습니다.

  21. 21

    비즈니스 계층에서 메서드를 호출 할 수 없습니다.

  22. 22

    비즈니스 계층에서 메서드를 호출 할 수 없습니다.

  23. 23

    Main ()에서 메서드를 호출 할 수 없습니까?

  24. 24

    메서드는 AJAX에서만 호출 할 수 없습니다.

  25. 25

    클래스의 메서드 C #을 호출 할 수 없습니다.

  26. 26

    초기화 전에 draggable에서 메서드를 호출 할 수 없습니다.

  27. 27

    C # DLL에서 http 호출을 할 수 없습니다.

  28. 28

    SYSPRO의 VBscript에서 C # dll을 호출 할 수 없습니다.

  29. 29

    Clojure에서 특정 Java 메서드를 호출 할 수 없습니다.

뜨겁다태그

보관