ios - 核心数据 | 即使没有在 swift 中标记,自动生成的 String 和 Date 属性也是可选的
问题描述
我注意到日期和字符串属性总是在自动生成的类中快速创建为可选属性,即使未选择可选属性也是如此。
在苹果文档中,所有日期和字符串在示例中都显示为可选
在 Swift 中,您使用 @NSManaged 关键字声明属性:
类 MyManagedObject:NSManagedObject {
@NSManaged var title: String? @NSManaged var date: NSDate?
}
目前使用 swift 3.2 我不希望某些字符串属性是非可选的。使其成为强制性的最佳方法是什么?
解决方案
两种选择
- 编辑
MyManagedObject
使它们成为非可选的。这意味着您需要自己维护这个类并在核心数据模型和类中进行任何更改 - 创建一个具有相同属性的协议(或子类)(您需要为它们提供新名称)但不是可选的,并在单独的扩展中实现此协议以获取和设置原始属性,然后使用此协议而不是
MyManagedObject
在您的代码中。
如果您的数据模型稳定并且不会发生太大变化,那么第一个选项可能是最好的。
推荐阅读
- c++ - 为什么我的程序会跳过我的 switch 语句,直接进入默认状态?
- android - 我无法显示可扩展列表的第 4 级
- serverless - 如何调用 Lambda 函数然后使用无服务器返回
- python - 展平和重塑编码器的输入
- c++11 - 文件流到矢量,文件大小错误
- c# - c#中的前缀和后缀形式
- vue.js - Vue CLI 插件如何在 vue.js 项目中转译 javascript 代码?
- python - 为什么我得到数组而不是向量大小?
- firebase - Firestore 模拟器:如何生成 Firebase ID 令牌?
- macos - MacOS 麦克风“输入电平”不是确定性的