Décoder un fichier créé avec NSDocument, sous iPhone OS.
Nebuchad34
Membre
Bonjour !
Sur l'appli Mac je crée mes fichiers de documents à partir de la classe NSDocument et de sa methode :
-- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError
C'est lui qui s'occupe d'écrire le fichier en utilisant le NSData ainsi généré.
Sur l'iPhone j'aimerais pouvoir lire ces fichiers.
Si je fais un simple [NSData dataWithContentsOfFile:MyFilePath];
L'objet NSData que je récupère n'est en fait pas le même que celui que me donne la classe NSDocument via :
- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError
Dans le projet sur le Mac, j'ai sélectionné "XML" comme "Store Type" pour les documents générés par ma sous-classe de NSDocument.
La question, c'est comment récupérer, sous iPhone OS, le même NSData que celui avec lequel je travaille dans les méthodes de NSDocument mais à partir de mon fichier ?
Merci.
Sur l'appli Mac je crée mes fichiers de documents à partir de la classe NSDocument et de sa methode :
-- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError
C'est lui qui s'occupe d'écrire le fichier en utilisant le NSData ainsi généré.
Sur l'iPhone j'aimerais pouvoir lire ces fichiers.
Si je fais un simple [NSData dataWithContentsOfFile:MyFilePath];
L'objet NSData que je récupère n'est en fait pas le même que celui que me donne la classe NSDocument via :
- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError
Dans le projet sur le Mac, j'ai sélectionné "XML" comme "Store Type" pour les documents générés par ma sous-classe de NSDocument.
La question, c'est comment récupérer, sous iPhone OS, le même NSData que celui avec lequel je travaille dans les méthodes de NSDocument mais à partir de mon fichier ?
Merci.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ce réglage n'est utilisé que pour le choix du stockage des documents CoreData (d'où les choix XML, binaire et SQLite).
Si tu as bien utilisé le NSKeyArchiver, tu devrais pouvoir lire les NSData sur l'iPhone sans problème.
Par contre, note bien que l'archivage, par principe, nécessite que la hiérarchie des objets soit la même. En effet, l'archivage consiste à parcourir la hiérarchie des objets et enregistrer les valeurs de leurs propriétés et les objets auxquels ils sont attachés. Si ce n'est pas le cas, je ne sais pas trop comment NSUnarchiver se débrouille.
La couche modèle est elle organisée de la même façon sur Mac et iPhone ?
Voilà comment se présente ma méthode :
A priori, en ayant mon fichier .tournament sur l'iphone, je devrais pouvoir faire :
NSData *data = [NSData dataWithContentsOfFile:aTournamentFilePath];
et faire ensuite:
Mais ça ne marche pas. J'ai fait un simple log sur [playersArray count] et il me retourne 0, alors que j'ai bien des joueurs enregistrés dans ce tournoi normalement.
ça marche.
En fait, j'avais oublié un NSColor. Je pensais pourtant tous les avoir remplacé par mon "NSUIColor", mais j'en avait oublié un.