我需要使用CoreData保存一些数据。一般来说这根本不是问题。问题是,使用EVReflection创建数据因此继承了EVObject类。要将收集的数据保存到CoreData,他们还必须继承NSManagedObject。问题是swift不允许你继承多个类。非常感谢任何提示。
class Device : EVObject
{
var channel : [Channel] = [Channel]()
var name : String = ""
var ise_id : Int = 0
var unreach : Bool = false
var sticky_unreach : Bool = false
var config_pending : Bool = false
override internal func propertyMapping() -> [(String?, String?)] {
return [("name", "_name"), ("ise_id", "_ise_id"), ("unreach", "_unreach"), ("sticky_unreach", "_sticky_unreach"), ("config_pending", "_config_pending")]
}
}
答案 0 :(得分:3)
您不必继承。你可以扩展它们。例如:
class User : NSManagedObject{
@NSManaged .....
}
//Extension
import EVReflection
extension User : EVReflectable { }
https://github.com/evermeer/EVReflection#extending-existing-objects
答案 1 :(得分:0)
注意我并不知道EVReflection,但我认为这个答案通常适用。
不要使用多重继承。有两个单独的类和一个机制,用于从另一个创建/加载/更新一个对象。协议可以允许以最小化翻译样板的方式完成(如果您能够以安全的方式知道密钥名称,可以使用valueForKey(_:)
和setValue(_:forKey)
。
甚至可能没有必要拥有NSManagedObject子类,但只是在所有类中都有一个NSManagedObject实例,并根据需要加载/创建/保存。
答案 2 :(得分:0)
这取决于您要从EVReflection使用的功能。由于NSManagedObject也有NSObject作为它的基类,因此只需将NSManagedObject设置为基类而不是EVObject即可使用大多数函数。
您唯一需要做的就是直接调用EVObject函数,而必须实现该EVObject方法中的代码片段。几乎任何函数都只有一个方便的方法来调用相应的EVReflection函数。
如果您将来有任何疑问,请在GitHub上报告此问题。