创建一个计算的属性我的影片迷上了一个Storyboard GUI(Xcode中9和SWIFT 4)核心数据模型现在我想添加这是由两部分衍生的特性。我有一个名为Workout的实体,它的两个属性“rpe”和“seconds”被组合起来创建一个新属性“rpeTSS”。我在我的核心数据模型中声明了“repTSS”作为属性。我已将其设置为瞬态。在核心数据
我已经使用编辑菜单下的“让子类NSManagedObject ...”选项尝试,但,这似乎产生具有错误的文件。我尝试了生成的Workout类的子类,但无法弄清楚如何将它绑定到GUI中。
我再发的扩展,锻炼:
extension Workout{
public override func value(forKey key: String) -> Any? {
if key == "rpeTSS"{
return (100/49)*rpe*rpe*Double(seconds)/3600
}else{return super.value(forKey: key)}
}
}
我会说实话,这并不“感觉”的权利。无论如何它(种)的作品。我现在可以获得rpeTSS的正确价值,它显示在我的GUI中。但是,如果我对rpe和/或秒进行更改,GUI不会更新。
我猜上面的方法有点破解,从而绕过了各种消息,使GUI更新。
什么是核心数据中添加派生属性的正确方法是什么?我试图用这种方式来实现这一点,这意味着如果我添加任何东西到我的数据模型中,我不必重写派生属性的代码。
您可以创建实体类的对象并在其中设置属性?然后,无论何时您更改rpe或秒,都会更新rpeTSS属性。 – CodeNinja
不确定你的意思。实体类是在XCode中自动生成的。我尝试了继承它,但遇到了两个问题 - 1.如何使ManagedObject成为我的子类的一个实例并绑定到GUI中的子类;和2.我不断收到错误,我的计算属性不符合关键值。 –