在斯威夫特String
结构也被视为类对象,就像使用NSCoder
encodeObject(_:forKey:)
方法。我确实知道String
直接与 Objective-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")
}
}
目前这是不可能的。SE-0058将解决这个问题,但被推迟到 Swift 3 之外。SE-0058 的最终实现希望能够处理的不仅仅是 ObjC 桥接;例如,在更通用的解决方案中也允许 C++ 或 .NET 桥接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)