2015-11-05 11 views
24

Ho un'entità dati di base denominata Film che ha proprietà titolo e data. Ho notato che la sottoclasse NSManagedObject generata contiene proprietà NSManaged facoltative anche se ho contrassegnato le proprietà come non facoltative nell'ispettore dei dati di base.Sottoclasse Xcode NSManagedObject contiene opzionali quando sono contrassegnati come non opzionali

enter image description here

enter image description here

Posso possibile modificare manualmente come struttura non-optional o è una scelta migliore di lasciarlo come optional? Perché?

risposta

35

"Opzionale" indica qualcosa di diverso rispetto ai dati principali rispetto a Swift.

  • Se un attributo Core Data non è un optional, deve avere un valore non-nil quando si salvano le modifiche. In altre occasioni, al Core Data non importa se l'attributo è nullo.
  • Se una proprietà Swift non è facoltativa, deve avere un valore non nullo in qualsiasi momento al termine dell'inizializzazione.

La creazione di un attributo di dati di base non facoltativo non implica che sia non facoltativo nel senso celere del termine. Ecco perché il codice generato rende queste proprietà opzionali: per quanto riguarda i dati di base, è legale avere valori nulli tranne quando si salvano le modifiche.

+2

Assicurati di assegnare almeno una variabile non facoltativa all'interno di 'override func awakeFromInsert()'. – adamek

4

Questo è un problema noto. Alcune persone lo cambiano in modo non opzionale senza effetti negativi, lo mantengo come è stato generato e spero di risolvere in anticipo.

È sempre utile se si invia un bug ad Apple per aumentare la visibilità e la priorità.