나는이 같은 목표 - C에 정의 된 프로토콜 요구 사항을 충족해야합니다. 다른 Object 클래스의 Set을 반환하고 싶습니다. 내가 반환 할 클래스는 다음과 같이 정의된다 :Swift에서 NSSet <Class>을 사용하는 방법 (세트 <NSObject>로 내 보내기)?</p> <pre><code>@protocol AProtocol <NSObject> + (NSSet<Class> * _Nullable)someClasses; @end </code></pre> <p>내가 스위프트로 작성된 서브 클래스에서이 프로토콜을 구현하려는 :
프로토콜을 준수하는 클래스는 다음과 같이 정의된다
class B: NSObject {}
:
class A: NSObject, AProtocol {
static func someClasses() -> Set<NSObject>? {
return [B.self]
}
}
왜 NSSet<Class>
이 Set<NSObject>
대신 설정에 다리입니까?
이 솔루션은 충돌합니다. 어떻게 문제를 해결할 수 있습니까? AnyClass
이 Set
의 ValueType
의 전제 조건이다 Hashable
을 준수하지 않기 때문에
한 가지 질문으로,'Set? '을 반환하는 것이 프로토콜에서 NSSet 반환 유형을 어떻게 충족시키는 지 알 수 없습니다. 'Set '이 (가) 아니어야합니까? 또한 AppDelegate 유형에 대한 선언을 포함하십시오. –
@PatrickGoley 예, 혼란을 완전히 이해합니다. 혼란 스럽습니다. 누군가 나에게 설명했듯이 클래스는 Objective-C의 객체 일뿐입니다. 이것이 바로 이와 같이 연결되어있는 이유입니다. 다른 경우에는 AnyClass에 브리징한다고 생각하지만 AnyClass는 불가능한 Hashable (Set의 전제 조건)을 따르지 않기 때문에 가능하지 않습니다. Xcode는 이와 같은 프로토콜을위한 인터페이스를 생성합니다. AppDelegate는 Xcode에 의해 생성 된 것입니다. 원래 게시물에 추가합니다. – Ben
자, 문제 자체가 해결되고, 질문을 편집하고 답변을 추가합니다. 어쩌면 다른 사람들에게 도움이 될 것입니다. – Ben