배열 요소는 Objective-C에 연결할 수 없습니다.

오리

보기를 만들고 그라디언트를 적용하는이 코드가 있습니다.

import UIKit
import QuartzCore


let rect : CGRect = CGRectMake(0,0,320,100)

var vista : UIView = UIView(frame: rect)

let gradient : CAGradientLayer = CAGradientLayer()
gradient.frame = vista.bounds

let cor1 = UIColor.blackColor()
let cor2 = UIColor.whiteColor()

let arrayColors = [cor1.CGColor, cor2.CGColor]

gradient.colors = arrayColors

view.layer.insertSublayer(gradient, atIndex:0)

Xcode에서 컴파일 오류가 발생하지 않지만 코드가 줄에서 충돌합니다.

let arrayColors = [cor1.CGColor, cor2.CGColor]

메시지 배열 요소를 사용하여 Objective-C에 연결할 수 없습니다.

실제로 Swift에서 CGColors 배열을 어떻게 만들 수 있는지 잘 모르겠 기 때문에 충돌이 발생할 것으로 예상했습니다. 여기서 놀라운 점은 Objective-C를 언급하는 Xcode입니다. 내 마음에 나는 신속하게 CGColorRef를 만들고있었습니다 ...

단서가 있습니까? Objective-C를 언급하는 이유는 무엇이며 어떻게 해결합니까?

BergQuester

Objective-C가 언급 된 이유는 UIKit과 QuartzCore가 Objective-C 프레임 워크이기 때문입니다. 특히 gradient.colors = arrayColors.NET Framework를 예상하는 Objective-C 메서드를 호출하고 있습니다 NSArray.

Apple의 문서 NSArray에 따르면 배열의 항목을 고려할 수있는 한 배열이 자동으로 연결되어야하는 것처럼 들리기 때문에 버그처럼 보입니다 AnyObject.

Swift 배열에서 NSArray 객체로 브리지 할 때 Swift 배열의 요소는 AnyObject와 호환되어야합니다. 예를 들어, Int [] 유형의 Swift 배열은 Int 구조 요소를 포함합니다. Int 유형은 클래스의 인스턴스가 아니지만 Int 유형이 NSNumber 클래스에 연결되기 때문에 Int 유형은 AnyObject와 호환됩니다. 따라서 Int [] 유형의 Swift 배열을 NSArray 객체에 연결할 수 있습니다. Swift 배열의 요소가 AnyObject와 호환되지 않는 경우 NSArray 객체에 브리지 할 때 런타임 오류가 발생합니다.

위에서 설명한 것과 동일한 브리징 규칙에 따라 Swift 배열 리터럴에서 직접 NSArray 객체를 만들 수도 있습니다. 상수 또는 변수를 NSArray 개체로 명시 적으로 입력하고 배열 리터럴에 할당하면 Swift는 Swift 배열 대신 NSArray 개체를 만듭니다.

현재로서는 해결 방법 arrayColorsNSArray다음 과 같이 선언 하는 것입니다 .

let arrayColors: NSArray = [cor1.CGColor, cor2.CGColor]

또는 복용으로 선언하려면 다음을 수행하십시오 AnyObject.

let arrayColors: Array <AnyObject> = [cor1.CGColor, cor2.CGColor]

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

배열의 Typescript 요소에 액세스 할 수 없습니다.

분류에서Dev

배열에 요소를 추가 할 수 없습니다.

분류에서Dev

배열 목록에 요소를 추가 할 수 없습니다.

분류에서Dev

Objective-C 오류에서 어레이를 연결할 수 없습니다.

분류에서Dev

Ruby는 배열의 요소를 제거 할 수 없습니다.

분류에서Dev

NSTextAlignment는 Objective-C에서 표현할 수 없습니다.

분류에서Dev

Paho의 MQTT는 연결에 연결할 수 없습니다.

분류에서Dev

numpy 0 배열에 문자열 요소를 추가 할 수 없습니다.

분류에서Dev

C에서 문자 배열 요소를 정수 요소로 변환 할 수 없습니다.

분류에서Dev

Jenkins는 Git 저장소에 연결할 수 없습니다.

분류에서Dev

kubernetes로 배포 할 때 gRPC에 연결할 수 없습니다.

분류에서Dev

공용 가변 배열 (Objective-C)에서 개체를 제거 할 수 없습니다.

분류에서Dev

PHP에서 배열의 요소 값을 에코 할 수 없습니다.

분류에서Dev

반응에서 배열 요소에 액세스 할 수 없습니다.

분류에서Dev

배열 요소를 올바르게 표시 할 수 없습니다. C #

분류에서Dev

어셈블리의 배열에있는 요소 값에 액세스 할 수 없습니다.

분류에서Dev

c의 배열에서 중복 요소를 제거하고 변수를 수정할 수 없습니다.

분류에서Dev

가져온 배열 요소에 액세스 할 수 없습니다.

분류에서Dev

구성 요소에 전달 된 배열을 반복 할 수 없습니다.

분류에서Dev

SQL 쿼리의 getted 요소를 배열에 추가 할 수 없습니다.

분류에서Dev

배열 구조의 모든 요소에 액세스 할 수 없습니다.

분류에서Dev

배열 객체에 여러 요소를 추가 할 수 없습니다.

분류에서Dev

ng-model-options가있는 지시문은 모델 배열에 새 요소를 추가 할 수 없습니다.

분류에서Dev

Objective-C에서 다차원 배열의 요소 수를 계산하는 방법

분류에서Dev

Xcode 5 및 Objective-C에서 경고 및 작업 시트의 각 버튼에 연결할 수 없습니다.

분류에서Dev

bucardo는 다른 DB에 연결할 수 없습니다

분류에서Dev

C는 mongodb BSON 배열을 검색 할 수 없습니다.

분류에서Dev

Subversion 로컬 저장소에 연결할 수 없습니다.

분류에서Dev

Eclipse에서 CVS 저장소를 연결할 수 없습니다.

Related 관련 기사

  1. 1

    배열의 Typescript 요소에 액세스 할 수 없습니다.

  2. 2

    배열에 요소를 추가 할 수 없습니다.

  3. 3

    배열 목록에 요소를 추가 할 수 없습니다.

  4. 4

    Objective-C 오류에서 어레이를 연결할 수 없습니다.

  5. 5

    Ruby는 배열의 요소를 제거 할 수 없습니다.

  6. 6

    NSTextAlignment는 Objective-C에서 표현할 수 없습니다.

  7. 7

    Paho의 MQTT는 연결에 연결할 수 없습니다.

  8. 8

    numpy 0 배열에 문자열 요소를 추가 할 수 없습니다.

  9. 9

    C에서 문자 배열 요소를 정수 요소로 변환 할 수 없습니다.

  10. 10

    Jenkins는 Git 저장소에 연결할 수 없습니다.

  11. 11

    kubernetes로 배포 할 때 gRPC에 연결할 수 없습니다.

  12. 12

    공용 가변 배열 (Objective-C)에서 개체를 제거 할 수 없습니다.

  13. 13

    PHP에서 배열의 요소 값을 에코 할 수 없습니다.

  14. 14

    반응에서 배열 요소에 액세스 할 수 없습니다.

  15. 15

    배열 요소를 올바르게 표시 할 수 없습니다. C #

  16. 16

    어셈블리의 배열에있는 요소 값에 액세스 할 수 없습니다.

  17. 17

    c의 배열에서 중복 요소를 제거하고 변수를 수정할 수 없습니다.

  18. 18

    가져온 배열 요소에 액세스 할 수 없습니다.

  19. 19

    구성 요소에 전달 된 배열을 반복 할 수 없습니다.

  20. 20

    SQL 쿼리의 getted 요소를 배열에 추가 할 수 없습니다.

  21. 21

    배열 구조의 모든 요소에 액세스 할 수 없습니다.

  22. 22

    배열 객체에 여러 요소를 추가 할 수 없습니다.

  23. 23

    ng-model-options가있는 지시문은 모델 배열에 새 요소를 추가 할 수 없습니다.

  24. 24

    Objective-C에서 다차원 배열의 요소 수를 계산하는 방법

  25. 25

    Xcode 5 및 Objective-C에서 경고 및 작업 시트의 각 버튼에 연결할 수 없습니다.

  26. 26

    bucardo는 다른 DB에 연결할 수 없습니다

  27. 27

    C는 mongodb BSON 배열을 검색 할 수 없습니다.

  28. 28

    Subversion 로컬 저장소에 연결할 수 없습니다.

  29. 29

    Eclipse에서 CVS 저장소를 연결할 수 없습니다.

뜨겁다태그

보관