在我的代碼,我有NSManagedObject
以下擴展名:支持多種的iOS SDK版本的雨燕
extension NSManagedObject {
convenience init(context: NSManagedObjectContext) {
let name = self.dynamicType.entityName()
let entity = NSEntityDescription.entityForName(name, inManagedObjectContext: context)!
self.init(entity: entity, insertIntoManagedObjectContext: context)
}
}
正在工作按預期在Xcode 7/9的iOS SDK。然而,iOS的10 SDK增加了一個方法具有相同簽名:
/* Returns a new object, inserted into managedObjectContext. This method is only legal to call on subclasses of NSManagedObject that represent a single entity in the model.
*/
@available(iOS 10.0, *)
public convenience init(context moc: NSManagedObjectContext)
這使編譯器不開心:Initializer 'init(context:)' with Objective-C selector 'initWithContext:' conflicts with previous declaration with the same Objective-C selector
現在,我想用新的IOS 10的init(如果可用),並繼續使用我的如果應用程序在iOS 9設備上運行,則爲擴展名。
如何在限制現有代碼中的變化的情況下實現此目標有一個很好的方法嗎?我想將init
的簽名保留在擴展名中。