2016-02-24 1 views
1

Disons que j'ai une sous-classe NSManagedObject Instrument et que je souhaite sous-classer cette sous-classe pour créer quelque chose comme Guitar. Y a-t-il une pratique courante pour cela? Cela ne semble pas aussi simple que de sous-classer NSObject.Sous-classe une sous-classe NSManagedObject

+0

En quoi trouvez-vous que ce n'est pas simple? –

Répondre

3

Pour les sous-classes d'objets gérés, la sous-classe/parent relation de classe correspond à la relation de l'entité sous-entité/mère des entités de données de base.

Si vous définissez la « entité mère » dans l'inspecteur du modèle de données Core de « Guitar » à « Instrument », puis créer l'objet géré sous-classes dans Xcode, vous obtiendrez

// Instrument.swift: 
class Instrument: NSManagedObject { 

// Insert code here to add functionality to your managed object subclass 

} 

// Guitar.swift: 
class Guitar: Instrument { 

// Insert code here to add functionality to your managed object subclass 

} 

Pour plus d'informations, consultez la section « Entité héritage » dans le Core Data Programming Guide:

héritage Entité fonctionne d'une manière similaire à l'héritage de classe, et est utile pour les mêmes raisons. Si vous avez un nombre d'entités similaires, vous pouvez factoriser les propriétés communes en une super-entité, également appelée entité parente.

aussi faire attention à la

NOTE

Soyez prudent avec l'héritage de l'entité lorsque vous travaillez avec SQLite magasins persistants. Toutes les entités qui héritent d'une autre entité existeront dans la même table dans SQLite. Ce facteur dans la conception du magasin persistant SQLite peut créer un problème de performances.

0

Il n'y a rien de mal à faire:

class Instrument: NSManagedObject { 
    @NSManaged var name: String 
} 

class Guitar: Instrument { 
    @NSManaged var numberOfString: NSNumber 
}