저는 Swift에서 앱을 작성하고 일부 Objective-C 코드를 브리징합니다. 이러한 클래스 중 하나에는 + (CLLocationCoordinate2D *)polylineWithEncodedString:(NSString *)encodedString;
과 같은 메서드가 있습니다.Swift에서 UnsafeMutablePointer <CLLocationCoordinate2D>를 [CLLocationCoordinate2D]로 변환합니다.
스위프트에서이 메서드는 UnsafeMutablePointer<CLLocationCoordinate2D>
을 반환합니다. 내가 원하는 건 스위프트 배열 CLLocationCoordinate2D
입니다. 분명히 작동하지 않습니다 무엇
는하지만 시도, 이것이다 :
let coordinates: [CLLocationCoordinate2D] = TheClass.polylineWithEncodedString(encodedString)
나에게 다음과 같은 오류 줄 것이다 :
'UnsafeMutablePointer<CLLocationCoordinate2D>' is not convertible to '[CLLocationCoordinate2D]'
이 UnsafeMutablePointer<CLLocationCoordinate2D>
을 변환 어떻게 든 가능을 [CLLocationCoordinate2D]
? 아니면 다른 접근법을 사용해야합니까?
중복 가능성 http://stackoverflow.com/questions/25560751/unsafemutablepointer-in-swift-as-replacement-for- 적절한 크기의 c-array-in-obj-c) – rakeshbs
이것은 UnsafeMutablePointer <>에서 [] 로의 대신 []에서 UnsafeMutablePointer <>로 반대 방향으로 진행되는 것 같습니다. –
@ViktorNilsson : 포인터를 통해 * 많은 * 요소가 반환되는 방법을 알고 있습니까? 배열이 어디에 할당되어 있으며 누가 그것을 해제해야합니까? - (참조 된 스레드 에서처럼) ObjC 함수로 채워지는 Swift 배열을 전달하는 것은 메모리 관리 측면에서 더 쉬울 것입니다. –