Xcode NSManagedObject subclass contains optionals when they are marked as non-optional

“Optional” means something different to Core Data than it does to Swift.

  • If a Core Data attribute is not optional, it must have a non-nil value when you save changes. At other times Core Data doesn’t care if the attribute is nil.
  • If a Swift property is not optional, it must have a non-nil value at all times after initialization is complete.

Making a Core Data attribute non-optional does not imply that it’s non-optional in the Swift sense of the term. That’s why generated code makes these properties optional– as far as Core Data is concerned, it’s legal to have nil values except when saving changes.

Leave a Comment