Определите структуру, которая рассматривается как класс в Swift
В СвифтеString
Структура также рассматривается как объект класса, как при использованииNSCoder
encodeObject(_:forKey:)
метод. Я знаю чтоString
напрямую соединен с классом target-c,NSString
, но есть ли способ сделать кастомstruct
что ведет себя аналогично? Возможно соедините это с пользовательским классом? Я хочу иметь возможность сделать что-то вроде этого:
struct SortedArray <Value: Comparable> {}
// Would I need to create a bridge between
// SortedArray and NSSortedArray? Can I even do that?
class NSSortedArray <Value: Comparable> : NSObject, NSCoding {
required init?(coder aDecoder: NSCoder) {}
func encodeWithCoder(aCoder: NSCoder) {}
}
class MyClass : NSObject, NSCoding {
private var objects: SortedArray<String> = SortedArray<String>()
required init?(coder aDecoder: NSCoder) {
guard let objects = aDecoder.decodeObjectForKey("objects") as? SortedArray<String> else { return nil }
self.objects = objects
}
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(objects, forKey: "objects")
}
}