2015-01-02 1 views
-2

Swift 배열의 배열을 NSMutableArray로 변환하여 Objective-C 코드로 사용하려고합니다. 지금까지 결과는 끔찍했습니다. 이것은 내가 가지고있는 것입니다 :스위프트 배열을 Objective-C 배열로 변환

var polygon: [CGPoint] = [] 
//add bunch of CGPoints to polygon 
var polygonNSMutable: NSMutableArray = [] 
//if better way to convert Swift array into NSMutableArray -> please inform me! 
for l in 0 ..< (polygon.count-1) { 
    //first attempt: 
    polygonNSMutable.addObject(polygon[k] as CGPoint as AnyObject) // Cannot downcast from 'CGPoint' to [email protected] protocol type 'AnyObject'  
    //second attempt: 
    polygonNSMutable.addObject(polygon[k]) //results: Type 'CGPoint' does not conform to protocol 'AnyObject' 
} 

질문 : 어떻게 스위프트 배열을 Objective-C로 변환합니까? 그것은 먼저 NS<Mutable>Array

먼저 일에 C-구조체를 저장 될 때

답변

2

여기에서 문제는 너무 많은 당신을위한 루프에 오류가있어, 스위프트 배열로 변환되지 않습니다. 이 :

for l in 0 ..< (polygon.count-1) { 

이되어야한다

for l in 0 ..<polygon.count { 

또는 :

for l in 0 ... (polygon.count-1) { 

좋아, 이제 NSArray/NSMutableArray의 C-구조체를 저장하기 위해, 우리는 NSValue로 포인트를 저장해야 에스. 이지도 기능을 사용하는 것이 좋을 수도 있지만

for point in polygon { 
    polygonNSMutable.addObject(NSValue(CGPoint:point)) 
} 

그러나

for l in 0 ..< (polygon.count-1) { 
    polygonNSMutable.addObject(NSValue(CGPoint:polygon[k]) 
} 

그냥 같이 당신의 점을 반복 수 : 루프가이 일을 당신은 당신의 현재를 다시 작성할 수 objc 배열을 변경할 필요가없는 경우 :

let objCArray: NSArray = polygon.map { (point) -> NSValue in 
    return NSValue(CGPoint:point) 
} 
+1

매우 상세하고 명확한 대답에 감사드립니다. – user3673836