2016-09-26 4 views
10

에있는 NSDate 범주를 사용하여 나는 NSDate에의 Obj-C 카테고리를하고 난 스위프트의 날짜 구조와 해당 범주의 기능을 사용하려합니다.스위프트 3 날짜 형식

언제든지 전송하거나 Date 또는 다른 추악한 해킹 인 NSDate 인스턴스를 만들지 않고도이를 수행 할 수있는 명확한 방법이 있습니까?

또는 내가있는 NSDate 대신 날짜로 내 개체를 정의하는 데 함께 붙어 무엇입니까?

애플은 재단 프레임 워크에 대한 스위프트 오버레이가있는 NSDate 클래스에 다리 날짜 구조를 제공 here

있음을 언급하고있다. 날짜 값 유형이있는 NSDate 참조 타입과 같은 기능을 제공하고, 두 목표 C-API와 상호 작용 스위프트 코드에서 상호 교환 적으로 사용될 수있다. 이 동작은 Swift가 표준 문자열, 숫자 및 컬렉션 유형을 해당 Foundation 클래스에 연결하는 방법과 유사합니다.

, 나는 깨끗하고 최소한의 코드 내 Date 객체 내 NSDate 카테고리의 추가 기능에 액세스 할 수있는 방법을 내 질문은 그래서? 제가

+1

가'NSDate' 목표 - C 범주를 사용하려면 NSDate''에'Date' 개체를 캐스팅해야합니다. 또는 카테고리를 '날짜'에 대한 신속한 확장으로 다시 작성할 수 있습니다. – Rob

답변

5

스위프트 3을 사용하고 참조 용

는 스위프트의 3 종류가 해당 목표-C 객체 내부 참조를 통해 구현되는 가교. 그래서, "구성 상속을 통해"원칙과 유사, 당신은 스위프트에 관심있는 방법을 선언 할 수 있습니다, 단순히 전화를 전달합니다. 예를 들어

, 다음 목표 - C의 방법이있는 경우 : 앞으로 단순히 캐스트는 Date에 확장을 추가 할 수

@interface NSDate(MyAdditions) 
- (NSString*)myCustomNicellyFormattedDate; 
@end 

과 :

extension Date { 
    var myCustomNicellyFormattedDate: String { 
     return (self as NSDate).myCustomNicellyFormattedDate() 
    } 
} 

이 접근 방식은 장점이 있습니다 적은 오버 헤드와 유지 보수 문제로 Objective-C와 Swift 모두에서이 방법을 사용할 수 있습니다. 그리고 코드 중복없이 가장 중요합니다.