Domanda

C'è un modo migliore per serializzare un oggetto objC che usare / NSKeyedArchive?

Ho bisogno di distribuire l'oggetto attraverso un C ++ STD:. Ostream-come oggetto di mettere su un altro computer

L'oggetto ha più di 122 membri di vario tipo ... per cui mi vuole

[coder encodeObject: (id) forKey: @"blah"];

per tutti loro ...

Qualcuno ha un bel Perl script che almeno scrittura fuori? Io non so nemmeno se gli oggetti in esso contenuti implementare che significa che questo potrebbe trasformarsi in un enorme brutto pasticcio dato che non posso cambiare l'origine dell'oggetto - dovrò ereditare e aggiungere il @interface ad esso ...

O mi viene muto? la guida di Apple non mi aiuta in quanto l'archiviazione in formato XML non passerà bene anche se l'ostream.

C'è un modo migliore per fare questo?

-S!


[Modifica 1]
Così ho guardato NSCoding, e le mie classi contengono NSManagedObjects generico ... non conformi a <NSCoding>. Ho provato con l'Aspect Oriented Programmazione trovato [qui] [2] - ma questo porta ad una ricorsione infinita in fase di esecuzione. (Almeno questo è quello che presumo uno stack di chiamate di 104795 chiamate a [id encodeWithCoder:] sono.

Inoltre, non posso aggiungere appena <NSCoding> alla classe come io sono carico come i suoi membri sono oggetto di un quadro importato. Non posso aggiungere il protocollo ad esso, che è il motivo per cui ho pensato che la roba Aspect-Oriented avrebbe funzionato.

L'ultima (e terribile) idea che ho è quello di creare una sottoclasse ogni classe che ho bisogno, e implementare i protocolli di lì. Un enorme blocco stradale che posso forsee è che se le classi includono NSArrays delle classi non esposti nel quadro. Poi ho affondato.

C'è un modo migliore per fare questo? Mi sento come se è una decisione in fase di progettazione, ed è troppo tardi per essere l'aggiunta di questa capacità.

help ...

PS

tutta questa cosa di anti-spam con link limitante schifo. Come faccio a fare domande intelligenti!?

[2]: http: / /davedelong.com/blog/2009/04/13/aspect-oriented-programming-objective-c#comment-803

È stato utile?

Soluzione

Utilizzando NSCoding è sicuramente la strada giusta da percorrere. Se non si desidera digitare tutto il boilerplate NSCoding-correlata (e sono d'accordo, è un dolore), dare un'occhiata a Accessorizer che può scrivere per voi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top