Sto lavorando a un'applicazione in cui l'utente è in grado di disegnare sullo schermo con il dito. Sto usando UIBezierPath per questo. Ho bisogno di mantenere questo dato che è un NSArray contenente più oggetti BezierPath. Qual è il modo migliore per farlo? Archiviare in coredata, archiviare in un file usando NSData? Molto obbligato.Persistenza UIBezierPath con dati di base
risposta
Ti aspetti di dover memorizzare più oggetti? Dovrai essere in grado di recuperarli in base a qualche filtro o ordinamento? Raccomando di utilizzare Core Data per risparmiare una discreta quantità di lavoro nell'imballaggio/disimballaggio dei dati. Non c'è davvero una ragione per archiviarlo in un file.
edit:
Come l'altra risposta, ha detto, basta archiviare a NSData. La classe UIBezierPath aderisce al protocollo NSCoding modo da poter fare qualcosa di simile per archiviarlo:
NSData *bezierData = [NSKeyedArchiver archivedDataWithRootObject:bezierPath];
Si può persistere quell'oggetto NSData in Core Data.
per decodificare l'archivio, assumendo abbiamo un NSData oggetto bezierData
, si può fare qualcosa di simile:
UIBezierPath *bezierPath = [NSKeyedUnarchiver unarchiveObjectWithData:bezierData];
archivio l'UIBezierPath a NSData, e conservarla come un attributo di tipo NSData in CoreData. Puoi avere un'API più facile se rendi un attributo trasformabile.
È piuttosto facile da fare, soprattutto per le classi che già supportano l'archiviazione.
Vedere questo documento per ulteriori informazioni.
Come ti persistere un UIBesierPath in CoreData? –
aggiornamento della mia risposta. – Dima