2017-10-29 3 views
1

에 다리를되도록은 NSArrayNSNumber의 주석을 할 수있는 방법이 있나요 로주석 NSArray를 <NSNumber *> * 목표 - C에서이 배열 <Int>

var myProperty: [Int]var myProperty: [NSNumber] 대신?

나는 NS_SWIFT_NAME을 알고 있지만 유형을으로 변경할 수 없습니다.

+0

당신이 더 명확하게 설명 할 수 종류를 캐스팅해야 별개의 [Int] 유형을 얻으려면? swind에서'Int' 배열이나'NSNumber' 배열이 필요합니까? 또는 Objective c에서'Int' 배열일까요? – trungduc

+0

Objective-C의 NSArray *에서 Swift의 Int 배열입니다. – Trenskow

+0

질문을 한 후에 조금 더 연구했습니다. 나는 그것이 가능하다고 생각하지 않는다. 'UIGestureRecognizer'의'allowedTouchTypes' 속성을 보시면됩니다. 그 중 하나는'NSArray *'리턴 타입이며 Swift에서'[NSNumber]'로 임포트됩니다. – Trenskow

답변

1

Objective-C에서 심볼을 가져올 때 정적 유형을 변경할 수 없습니다.

그러나 타입 캐스트를 사용하지 않고 Swift Int 배열을 할당 할 수 있습니다 (foo은 ObjC 클래스의 인스턴스 임). 그러나 유형은 변경되지 않습니다. 한편

foo.myProperty = [1, 2, 3, 4, 5] 
print(type(of: foo.myProperty)) // Optional<Array<NSNumber>> 

let mySwiftProperty = foo.myProperty as! [Int] 
print(type(of: mySwiftProperty)) // Array<Int> 
+0

정답으로 사용합니다. 초기 질문 후에 나는 약간의 조사를했고, UIKit조차도이 작업을 수행하므로 불가능하다고 생각합니다. 필자는 사용자에게 올바른 유형으로 캐스팅 할 책임을 부여하지 않으려했습니다. 감사! – Trenskow