2010-06-12 2 views
0

Quelqu'un peut-il s'il vous plaît me dire comment écrire NSMutableArray d'objets de classe personnalisée au fichier? ci-dessous est le code que j'utilise pour écrire mon tableau "medicationsArray" au fichier. medicationsArray contient les objets de below drug Classe de donnéesComment stocker NSMutableArray d'objets de classe définis par l'utilisateur au système de fichiers dans l'iphone?

@interface medicationData: NSObject { NSString * drName; NSString * date; NSString * description; } @end

NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); 
NSString *documentDir = [path objectAtIndex:0]; 
NSString *pathWithFileName; 

NSString *pathWithFileName = [NSString stringWithFormat:@"%@/medicationsArray",documentDir]; 
[medicationsArray writeToFile:pathWithFileName atomically:NO]; 

en utilisant ce code je ne suis pas en mesure de créer un fichier. quelqu'un peut me aider dans ce domaine, grâce à l'avance

+0

Ainsi, votre medicationsArray contient medicationData, non? – vodkhang

+0

oui vodkhag .... – CKT

Répondre

2

Au lieu de construire le pathWithFileName vous devez « manuellement » utiliser la stringByAppendingPathComponent: méthode à la place:

NSString *pathWithFileName = [documentDir stringByAppendingPathComponent:@"medicationsArray"]; 

Cela prendra soin de tous les barres obliques, etc. Sur le chemin. C'est peut-être la raison pour laquelle votre chemin peut être mauvais. Je suppose que la déclaration supplémentaire de pathWithFileName dans votre extrait est juste une faute de frappe.

0

Merci pour la réponse Claus, Maintenant, je suis en mesure de stocker les données, j'utilise NSArchiver et NSUnArchiver. ci-dessous est le code s'il vous plaît trouver.

NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); 
NSString *documentDir = [path objectAtIndex:0]; 
NSString *pathWithFileName; 

pathWithFileName = [NSString stringWithFormat:@"%@/medicationsArray",documentDir]; 
NSData *savedData = [NSKeyedArchiver archivedDataWithRootObject:appDelegate.medicationsArray]; 
[savedData writeToFile:pathWithFileName atomically:YES]; 

pour extraire les données

if([[NSFileManager defaultManager] fileExistsAtPath:pathWithFileName]) 
{ 
    NSData *savedData = [[NSData dataWithContentsOfFile:pathWithFileName] retain]; 
    appDelegate.medicationsArray = [[NSKeyedUnarchiver unarchiveObjectWithData:savedData] retain]; 
    [objMedicationDetailsTVController.tableView reloadData]; 
} 
Questions connexes