0

我有一个主要包含可选属性的核心数据模型。然后我假设我不需要解开分配给这些可选属性的值。例如,我认为我能够做到:

myEntity.gravity = currentOrder.gravity

(myEntity.gravity 是可选的)

但是,Swift 仍然需要我解开 currentOrder.gravity。考虑到我分配给的变量是可选的,我会认为我不需要解包它。

更新:

这是我正在描述的核心数据实体之一的定义:

    <attribute name="percentComplete" optional="YES" attributeType="Float" defaultValueString="0.0" usesScalarValueType="YES"/>

实体本身:

    <entity name="AircraftMeasurementsCD" representedClassName="AircraftMeasurementsCD" syncable="YES" codeGenerationType="class">
4

1 回答 1

1

看来你对“可选”这个词模棱两可。属性描述中的“可选”一词optional="YES"与 Swift Optional 枚举类型不同,也没有任何关系。

前者只是普通的英文单词“optional”,意思是“not required”——对于一个特定的实体,这个属性可能有也可能没有一个值,它是 a Float,但即使没有,它也是一个有效的实体。故事中没有说这个属性的类型Optional<Float>。它的类型是Float. 而且您不能在预期其包装类型的地方分配 Swift Optional;你必须打开它。

实际上,文档非常明确地指出了这一点:

可选属性在保存到持久存储时不需要具有值。默认情况下,属性是可选的。Core Data 的可选项与 Swift 的可选项不同。[我的斜体。]

于 2020-06-04T15:27:25.100 回答