2014-09-25 5 views
5

나는 내 응용 프로그램에서 신속하고 objective-c를 사용하고 있습니다.스위프트 배열에 NSArray의 내용 추가

나는 CustomClass를 가지고 있으며 클래스의 신속한 배열을 만들고 arrayOfCustomClass라는 NSArray에 이러한 객체의 배열이있는 oldClass라는 objective-c 클래스에서 내용을 추가하려고합니다.

'[(CustomClass)]' is not identical to 'CGFloat' 

어떤 도움 :

var newArray = [CustomClass]() 
newArray += oldClass.arrayOfCustomClass 

이 오류의 원인은? 감사합니다 Reza

+1

나머지 코드를 보여주세요! 'oldClass'는 무엇입니까? 'arrayOfCustomClass' 란 무엇입니까? – matt

답변

0

문제는 Swift가 NSArray에있는 내용을 전혀 모르는 것입니다. NSArray를 명시 적으로 [CustomClass]으로 캐스팅해야합니다 (거짓말을하지 않는 것이 좋으며 런타임에 충돌하는 것이 좋습니다). 작동하는 것 같다 무엇

+0

그러나 여기서'arrayOfCustomClass'가 실제로 무엇인지 밝힐 때까지 알지 못하는 추가 문제가있을 수 있습니다. – matt

+0

아래의 내 대답은 CustomClass로 캐스팅하기 전에 AnyObject로 캐스팅해야한다는 것을 보여줍니다. – reza23

+0

이것은 선택적 캐스트로 안전하게 수행 할 수 있습니다 - 내 대답을 참조하십시오. –

0

은 다음과 같습니다

newArray += oldClass.arrayOfCustomClass as AnyObject as [CustomClass] 
0

이 작업을 수행하려면 안전하게 그냥 옵션 캐스트를 시도해야합니다. 당신이 NSArray는 유형 CustomClass의 요소를 가지고 생각한다면, 당신은이 작업을 수행 할 수 있습니다

var newArray = [CustomClass]() 
if let customArray = oldClass.arrayOfCustomClass as? [CustomClass] { 
    newArray += customArray 
} 

당신이 (내가 아는, 당신이 무엇을 요구 약간 다릅니다)을 CustomClass 요소를 추출 할 경우,이 방법은 다음과 같습니다

var newArray = [CustomClass]() 
for element: AnyObject in oldClass.arrayOfCustomClass { 
    if let custom = element as? CustomClass { 
     newArray.append(custom) 
    } 
} 
관련 문제