Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Xcode NSManagedObject子类在标记为非可选时包含选项_Ios_Xcode_Swift_Core Data - Fatal编程技术网

Ios Xcode NSManagedObject子类在标记为非可选时包含选项

Ios Xcode NSManagedObject子类在标记为非可选时包含选项,ios,xcode,swift,core-data,Ios,Xcode,Swift,Core Data,我有一个名为Film的核心数据实体,它有属性标题和日期。我注意到生成的NSManagedObject子类包含可选的NSManaged属性,尽管我在core data inspector中将这些属性标记为非可选 我可以手动将其更改为非可选属性,还是将其保留为可选属性更好?为什么?这是一个众所周知的问题。有些人将其更改为非可选的,没有任何不利影响,我保留其生成方式,并希望尽早修复 如果你向苹果提交一个bug以提高可见性和优先级,它总是很有帮助的。对于核心数据而言,“可选”意味着与Swift不同的

我有一个名为Film的核心数据实体,它有属性标题和日期。我注意到生成的NSManagedObject子类包含可选的NSManaged属性,尽管我在core data inspector中将这些属性标记为非可选


我可以手动将其更改为非可选属性,还是将其保留为可选属性更好?为什么?这是一个众所周知的问题。有些人将其更改为非可选的,没有任何不利影响,我保留其生成方式,并希望尽早修复

如果你向苹果提交一个bug以提高可见性和优先级,它总是很有帮助的。

对于核心数据而言,“可选”意味着与Swift不同的东西

  • 如果核心数据属性不是可选的,则在保存更改时,它必须具有非零值。在其他时候,核心数据并不关心属性是否为nil
  • 如果Swift属性不是可选的,则在初始化完成后,它必须始终具有非零值

将核心数据属性设置为非可选并不意味着它在术语的快速意义上是非可选的。这就是为什么生成的代码使这些属性成为可选的——就核心数据而言,除非保存更改,否则具有零值是合法的。

创建managedobject类,将实体类类型更改为manual,并将这些类添加到项目范围中

编辑managedObject以使其非可选。这意味着您需要自己维护这个类,并对核心数据模型和类进行任何更改


如果数据模型稳定且不会更改,则可以使用此选项。

数据模型检查器中的可选复选框与Swift选项无关。该复选框确定属性是否需要有值

如果取消选中某个属性的可选复选框,则必须为该属性指定一个值,否则保存时将出现错误。通过选择可选复选框,可以保存而不给属性赋值。假设您有一个描述属性,它是一个字符串。如果选中可选复选框,则说明可以保留为空,但仍可以保存实体


这是另一个例子。假设您有文本字段,允许一个人输入他们的家庭、工作和手机号码。这些电话号码应该是可选属性。您不希望仅为了保存某人的数据而要求某人拥有家庭电话号码、工作电话号码和手机号码。

请确保至少在
覆盖func awakeFromInsert()
中指定任何非可选变量。将其设为非可选的解决方案是什么。我是否应该创建手动文件并使其成为非可选文件?相关:在CoreData实体属性面板中,将Codegen标记为手动文件,并在Xcode 10.1中声明您的NSManagedObject Manuallys。我想,在苹果的情况下,“早期修复”最多意味着几年。仍然发生在XCode 11.3.1中。现在是2020年,Xcode 11.5版仍在使用。这一年是2020年(大流行现在正在发生)。