2012-08-25 3 views
0

Comment NSArchiver est-il sérialisé dans un fichier? Je suppose qu'il est sérialisé en format binaire, n'est-ce pas? Que faire si je veux le stocker dans une chaîne de caractères afin de pouvoir le stocker dans la base de données SQLite? Ai-je besoin d'écrire mon propre NSArchiver personnalisé? Si oui, comment vais-je faire cela? Y a-t-il des tutoriels là-bas?Construction d'une série NSArchiver personnalisée en chaîne

p.s. Je me rends compte que Core Data peut le faire, mais permettez-moi de passer cette option pour le moment.

Répondre

0

Vous pouvez archiver vers un objet NSData au lieu d'un fichier, si vous le souhaitez, avec +archivedDataWithRootObject:. Ce ne sera pas une "chaîne", mais c'est bien, car un NSString dans Cocoa représente une séquence de caractères Unicode, tandis qu'un NSData représente une séquence d'octets (que vous pouvez facilement stocker où vous voulez, y compris dans une base de données).

Notez que vous devez vraiment utiliser NSKeyedArchiver à la place:

+ (NSData *)archivedDataWithRootObject:(id)rootObject

+ (id)unarchiveObjectWithData:(NSData *)data

+0

Qu'en est-il dans le Guide (https://developer.apple.com/library/mac /documentation/Cocoa/Conceptual/Archiving/Articles/codingctypes.html#//apple_ref/doc/uid/20001294-96941-BBCDIHEF) où il est dit "Vous ne devriez pas envelopper une structure avec un objet NSData et l'archiver"? La structure que j'essaie de stocker est une liste de liens doubles en C. Je suis en train de l'implémenter, et j'essaie actuellement de stocker mes entrées dans l'API C afin de pouvoir la reconstruire en utilisant un matériel rudimentaire plus tard. – huggie

+0

Cela parle de ce qui se passe * dans * l'archive, pas de la façon dont vous utilisez les bits résultants de l'archive. Votre question semble se poser "Je sais comment utiliser un" NSArchiver ", mais est-il possible d'archiver en mémoire et non dans un fichier?" 'NSArchiver' est destiné à être utilisé avec des objets Objective-C, pas des structures C, ce que dit ce guide. –

+0

Bon, je n'ai pas dit, mais il se trouve que je veux envelopper une liste de liens doublement écrit en C, d'où la confusion sur votre réponse. – huggie

Questions connexes