All*_*rao 43 subclass nsmanagedobject ios swift
我有一个名为Record的coredata实体,并且有一个属性dateUpdated.我注意到生成的NSManagedObject子类没有可选标记(?)
CoreData编辑器:
生成的子类:
预期:
更新: 这是乏味的在我的部分,因为我想再生子类每一次,这意味着我还需要手动更新所有可选值.在子类中使用非可选(不带'?')会导致我在分配之前检查evalue,如下例所示:
// sample value:
// serverDateFormatter = "yyyy/MM/dd"
// dateString = ""
// Branch is a subclass of Record (see above images)
var date = self.coreData.serverDateFormatter.dateFromString(dateString)
if date != nil
{
branch.dateUpdated = date
}
Run Code Online (Sandbox Code Playgroud)
但是如果xcode可以在子类中使用(?)自动设置可选值,我只需要这样做:
branch.dateUpdated = self.coreData.serverUTCDateFormatter.dateFromString(dateString)
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我有一堆属性需要手动标记为可选.
Ima*_*tit 45
核心数据模型编辑器中的可选复选框已在Swift及其引入的选项之前存在.Apple在其核心数据编程指南中陈述了它:
您可以指定属性是可选的 - 也就是说,不需要具有值.但是,一般情况下,不鼓励您这样做 - 特别是对于数值(通常,您可以使用具有默认值的强制属性 - 在模型中为0)获得更好的结果.原因是SQL对NULL有特殊的比较行为,与Objective-C的nil不同.数据库中的NULL与0不同,搜索0将不匹配NULL的列.
因此,使用Swift和Xcode 8时,可选复选框(仍然)与您在managedObject子类中将属性定义为选项的事实无关.NSManagedObject
当使用Editor > Create NSManagedObject Subclass创建子类属性时,不要指望可选复选框对子类属性可选类型产生任何影响.
也就是说,每当我需要一个属性在模型编辑器中选中其可选复选框时,我立即将其NSManagedObject
子类声明作为可选项.
NSManagedObject
每当您为数据模型检查器中的每个实体属性更改此选项并重建项目时,Mogenerator都能够自动将子类属性从非可选属性切换为可选属性.
是的,这似乎是一个错误/限制.使用非标量类型来解决此问题.
Swift代码被转换为Objective-C,而Objective-C不支持非类类型的nil值.
归档时间: |
|
查看次数: |
16974 次 |
最近记录: |