코코아 바인딩에서 액세스 할 수있는 정렬 된 컬렉션을 갖기 위해 NSObject
을 서브 클래 싱합니다. 내 수업은 다소 비슷해 보입니다.Swift에서 하위 클래스로 만들 때 NSObject의 설명 속성을 무시하려면 어떻게해야합니까?
public class OrderedCollection<Tk: Hashable, Tv> : NSObject {
var keys: Array<Tk> = []
var values: Dictionary<Tk,Tv> = [:]
override init() {
super.init()
}
// Subscript methods go here
override public var description: String {
var result = "{\n"
for i in 0..<self.count {
result += "[\(i)]: \(self.keys[i]) => \(self[i]!)\n"
}
result += "}"
return result
}
}
컴파일되지 않습니다. 오류 : '@objc' getter for non-'@objc' property
.
getter를 '@ objc'가 아닌 것으로 만드는 방법이 있습니까? 나는 Objective-C에서 접근 할 수있는 속성을 필요로하지 않는다 ...
수 없습니다. 일반 클래스는 Objective-C와 호환되지 않습니다. –
[스위프트의 제네릭 클래스에서 NSCoding을 구현하는 방법은 무엇입니까?] (http://stackoverflow.com/questions/25338484/how-to-implement-nscoding-on-a-generic-class-in-swift) –
제네릭 클래스는 ObjC와 호환되지 않는다는 것을 알고 있습니다. 그럼에도 불구하고, 문서에서 (적어도 내가 찾을 수 있었다), Swift에서 사용하기 위해 ObjC 클래스를 하위 클래스로 서브 클래 싱 할 수 없다고하고, 사실 내가 Swift에서 사용할 때까지 컴파일하고 컴파일하지 않는다고 설명을 무시하십시오. – estradin