2016-09-03 2 views
2

확장자가 NSURLSessionDownloadTask인데이 Extension 안에 Objective C Associated Objects를 사용하여 'id'라는 저장된 속성을 만들었습니다. 속성을 설정하려고하면 '인스턴스로 보낸 인식 할 수없는 선택기'가 나타납니다. 아래는 내 코드입니다.Swift : Extensions의 저장 속성 인식 할 수없는 선택기 예외

extension NSURLSessionDownloadTask { 

    private struct AssociatedKeys { 
    static var id: String? 
    } 

    var id: String? { 
    get { 
     return objc_getAssociatedObject(self, &AssociatedKeys.id) as? String 
    } 
    set { 
     if let newValue = newValue { 
     objc_setAssociatedObject(self, &AssociatedKeys.id, newValue as String?, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) 
     } 
    } 
    } 
} 

나중에;

let task = session.downloadTaskWithURL(url) 
task.id = identifier 

답변

1

내가 완전히 설명 할 수 있지만, 문제는 session.downloadTaskWithURL(url) 일부 내부 서브 클래스 __NSCFLocalDownloadTask의 인스턴스를 반환 될 것으로 보인다. 당신이 NSURLSessionTask 대신

extension NSURLSessionTask { ... } 

NSURLSessionDownloadTask의 확장으로 확장을 정의하면

는 내 시험에서 일했다.

관련 문제