首页 > 解决方案 > 核心数据 | 即使没有在 swift 中标记,自动生成的 String 和 Date 属性也是可选的

问题描述

我注意到日期和字符串属性总是在自动生成的类中快速创建为可选属性,即使未选择可选属性也是如此。

苹果文档中,所有日期和字符串在示例中都显示为可选

在 Swift 中,您使用 @NSManaged 关键字声明属性:

类 MyManagedObject:NSManagedObject {

@NSManaged var title: String?

@NSManaged var date: NSDate?

}

目前使用 swift 3.2 我不希望某些字符串属性是非可选的。使其成为强制性的最佳方法是什么?

标签: iosswiftcore-datansmanagedobjectoptional-parameters

解决方案


两种选择

  • 编辑MyManagedObject使它们成为非可选的。这意味着您需要自己维护这个类并在核心数据模型和类中进行任何更改
  • 创建一个具有相同属性的协议(或子类)(您需要为它们提供新名称)但不是可选的,并在单独的扩展中实现此协议以获取和设置原始属性,然后使用此协议而不是MyManagedObject在您的代码中。

如果您的数据模型稳定并且不会发生太大变化,那么第一个选项可能是最好的。


推荐阅读