当创建扩展助手来NSManagedObject
创建新的托管对象子类时,swift提供了Self
一种可以模仿的类型,instancetype
这很好,但是我似乎无法从中进行类型转换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)
}
}
(现在为Swift 3/4更新。可以在编辑历史记录中找到早期Swift版本的解决方案。)
您可以使用unsafeDowncast
到的返回值转换NSEntityDescription.insertNewObject()
到Self
(这是该方法实际上是所谓的类型):
extension NSManagedObject {
class func create(in context: NSManagedObjectContext) -> Self {
let classname = entityName()
let object = NSEntityDescription.insertNewObject(forEntityName: classname, into: context)
return unsafeDowncast(object, to: self)
}
// Returns the unqualified class name, i.e. the last component.
// Can be overridden in a subclass.
class func entityName() -> String {
return String(describing: self)
}
}
然后
let obj = YourEntity.createInContext(context)
工作,并且编译器将obj
正确的类型推断为YourEntity
。
问题内容: 我对项目有一些特定要求,因此决定实施不受管理的Neo4j扩展。 我在Neo4j文档中找到了以下信息: 非托管扩展 测试您的扩展 这看起来是一个好的开始。但是我无法为我工作。 是否有一些更完整的工作示例/模板可以用作参考? 问题答案: “手工”解决方案 TL; DR; - https://github.com/FylmTM/neo4j-unmanaged-extension- templ
我通过学校为一项任务提供的简报创建了一个飞机座位预订系统。我遇到了一个我无法解决的主要问题。 摘要说明抽象类必须有一个抽象方法和大约4个公共方法。在抽象类的两个子类中,我们都必须初始化对象数组(所有普通的座位)。然而,一旦它们被初始化,我不知道如何将它们发送回抽象类(该类有一个检查未预订的飞机座位的方法,这就是我需要初始化的座位对象的地方) ArrayIndexOutOfBounds在一个应该在边
本文向大家介绍如何在Python中创建类对象?,包括了如何在Python中创建类对象?的使用技巧和注意事项,需要的朋友参考一下 使用该类的构造函数创建一个类对象。然后将该对象称为类的实例。类实例化使用函数表示法。 在下面的代码中,我们定义一个类并创建了相同类的实例,如下所示
问题内容: 我想扩展现有的XMLHttpRequest对象,以便它可以与所有浏览器一起使用。现在我已经对JS继承和其他方面有所了解,但是在开始之前,我希望看到它的一个很好的例子。 HTML5具有上载和进度事件的东西,我想在继承的新对象中实现,即使不通过向客户端引入JS错误不支持该功能,该对象也可以运行。所以我想实现这样的目标。 可以将其他方法附加到UploadXMLHttpRequest类,如下所
我写了这个,但我不明白这是什么。
当我们实例化子类对象时,父类的构造函数也会被调用。那么它是父类的对象的创建吗?