NSManagedObject和协议的一致性

时间:2019-02-10 04:59:56

标签: ios swift protocols nsmanagedobject

这是我的问题,我有一个类型( MyManObj ),它是NSManagedObject的子类。

此类型有两个字段: fieldOne fieldTwo Int16

我也有这样定义的协议:

@objc protocol MyProtocol {
    var fieldOne:Int16 {get set}
    var fieldTwo:Int16 {get set}
}

我需要表达一个事实,即 MyManObj 符合 MyProtocol 。而且我不知道该怎么做。

我试图添加这样的代码,但是它不起作用:

extension MyManObj:MyProtocol {}

我确切地收到此消息:

Type 'MyManObj' does not conform to protocol 'MyProtocol'.

然后,我尝试了其他几种变体,但没有兴趣,因为它们失败了。

1 个答案:

答案 0 :(得分:0)

您收到此错误,因为协议中的变量/属性未标记为可选[它们是必需的],并且您的编译器要求您实现协议中声明的所有方法/属性。

要解决此问题,您可以执行以下操作:

@objc protocol MyProtocol: class {
     optional var fieldOne:Int16 {get set}
     optional var fieldTwo:Int16 {get set}
 }

OR

extension MyManObj:MyProtocol {
    var fieldOne:Int16 {
        get{}
        set{}
    }
    var fieldTwo:Int16 {
        get{}
        set{}
    }
}