При создании вспомогательного помощника расширения для NSManagedObject
для создания нового подкласса управляемого объекта, swift предоставляет тип Self
для mimic instancetype
, который является большим, но я не могу показаться typecast из AnyObject
. Следующий код не компилируется с ошибкой "AnyObject" не конвертируется в "Self"
Справка
extension NSManagedObject
{
class func createInContext(context:NSManagedObjectContext) -> Self {
var classname = className()
var object: AnyObject = NSEntityDescription.insertNewObjectForEntityForName(classname, inManagedObjectContext: context)
return object
}
class func className() -> String {
let classString = NSStringFromClass(self)
//Remove Swift module name
let range = classString.rangeOfString(".", options: NSStringCompareOptions.CaseInsensitiveSearch, range: Range<String.Index>(start:classString.startIndex, end: classString.endIndex), locale: nil)
return classString.substringFromIndex(range!.endIndex)
}
}