欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Overriding [email protected] declarations from extensions is not supported

程序员文章站 2022-03-10 23:31:03
...

Swift 对方付进行重写,报 Overriding [email protected] declarations from extensions is not supported 的错误。

从错误提示上来看,重写的的这个方法在extensions中的定义没有@objc。

找到这个分类中的这个方法,添加上@objc即可。如果在父类中复写OC的方法,在自雷Swift中重写该方法的话,需要添加@objc申明。

  • @objc means you want your Swift code (class, method, property, etc.) to be visible from Objective-C.
  • dynamic means you want to use Objective-C dynamic dispatch.

例如这里复写propertiesToDictionary()时候报错了

class InventoryItem: NSManagedObject {
  // ...
  
  override func propertiesToDictionary() -> [String : AnyObject] {
  
  }
}

在extension中的propertiesToDictionary()函数前加@objc关键字,就不会报上面的错误了。

import UIKit
import CoreData

extension NSManagedObject{
  	// ...
  
    @objc func propertiesToDictionary()->[String: AnyObject]{
    	// ...
  	}
}
相关标签: # Swift基础