Ho creato un modello Core Data in cui ho due oggetti, ad esempio Persona e Indirizzo. Una persona ha un indirizzo e un indirizzo può appartenere a molte persone. L'ho modellato nei dati di base come tali (quindi la doppia freccia punta a Persona, mentre la singola freccia va a Indirizzo)I dati principali restituiscono NSManagedObject anziché la classe Concrete, ma solo durante l'utilizzo. accessor
Ho quindi creato due classi per tali oggetti e implementato alcuni metodi personalizzati in quelle classi. Nel modello Core Data ho inserito i nomi delle classi in essi.
Se recupero direttamente un indirizzo da Core Data, mi dà l'effettiva classe concreta e posso richiamare i miei metodi personalizzati su di esso.
Se invece prelevo una Persona e provo ad accedere all'Indirizzo tramite Persona (es .: person.address) Ricevo un NSManagedObject che è un indirizzo (es: posso accedere a tutti gli attributi dei dati di base I impostato su di esso) ma non risponde ai miei metodi personalizzati, perché è di tipo NSManagedObject anziché Address. Si tratta di una limitazione di Core Data o sto facendo qualcosa di sbagliato? Se si tratta di una limitazione, c'è qualche problema?
Non è una limitazione dei dati principali; stai certamente facendo qualcosa di sbagliato. Cosa intendi esattamente per "non risponde ai miei metodi personalizzati, perché è di tipo NSManagedObject invece di Address"? Riceverete un selettore non riconosciuto come eccezione? Il compilatore si lamenta? Mostraci del codice e l'output o sarà difficile diagnosticare il problema. –
Quindi si tratta di un errore di runtime (non di un compilatore), su NSManagedObject che non risponde al nome del mio metodo personalizzato. Lo stesso errore che si ottiene quando non si specifica il nome della classe nel modellatore dati principale. – rustyshelf