我正在尝试扩展CKRecord
类以允许下标。为此,我创建了一个名为的新文件CKRecordHelper
并完成:
extension CKRecord {
subscript(key: String) -> AnyObject! {
get {
return self.objectForKey(key)
}
set(newValue) {
self.setObject(newValue as? CKRecordValue, forKey: key)
}
}
}
但是,我在get
和set
行上遇到错误,内容为:
使用Objective-C选择器'objectoForKeyedSubscript:'获得的下标与具有相同Objective-C选择器的方法'objectForKeyedSubscript'冲突。
我该如何解决?据我了解,Objective-C不允许方法重载,但是我正在使用Swift。最终,我只是希望CKRecord
允许在其上添加下标。
使用@nonobjc
属性在ObjC运行时隐藏该方法,因此Swift编译器无需担心与ObjC代码的兼容性。
extension CKRecord {
@nonobjc subscript(key: String) -> AnyObject! {
get {
return self.objectForKey(key)
}
set(newValue) {
self.setObject(newValue as? CKRecordValue, forKey: key)
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句