NSManagedObject 上的 Swift 扩展以返回实例类型

标签 swift

<分区>

假设我有一个托管对象 Word,我希望能够调用

var w = Word.create(context)

所以我定义了以下扩展:

extension NSManagedObject {
    class func create(context:NSManagedObjectContext) -> NSManagedObject {
        var classname = NSStringFromClass(self)
        var object = NSEntityDescription.insertNewObjectForEntityForName(classname, inManagedObjectContext: context) as NSManagedObject
        return object
    }
}

但是,它并没有按预期工作。

  1. NSStringFromClass 返回乱码,比如“_TtC8WordApp4Word”,我想不出一个 Swift 等价物
  2. 返回类型是NSManagedObject,当它应该是Self之类的东西时,但是将Self放在那里将无法编译。

有没有办法做我想做的事?

最佳答案

关于 (1):Evan Swick 对错位的名字有一些看法:http://www.eswick.com/2014/06/inside-swift/

请参阅 [此答案][1] 以获得很好的解释。

“_TtC8WordApp4Word”:您必须提取该字符串的最后部分并将其用于 entityName 参数。

关于NSManagedObject 上的 Swift 扩展以返回实例类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24832955/

相关文章:

json - 使用 ForEach 的多个 NavigationLink

ios - 在 Siri 套件中创建通用/动态自定义意图?

ios - 使用枚举时实现 NSObject 协议(protocol)时出现链接器错误?

swift - 使用固定的 SKPhysicsJoint 将平台检测碰撞盒作为子元素附加到玩家 Sprite 上会更改玩家的碰撞和检测位掩码

ios - 我如何在字符串支持的枚举数组上使用字符串函数?

swift - 转换 String 或 NSUrl 以便在 UIActivityViewController 中使用

swift - 如何使用3种颜色制作UIView渐变效果

ios - Swift 3.0 图像集

ios - 在 UILongPressGestureRecognizer 之后在 UICollectionViewCell 上显示按钮

ios - UIDevice currentDevice 模型可能的值