Mey,
Je ne suis pas sûr que je comprends votre déclaration au sujet d'avoir une plist vide. Je suppose que vous voulez dire que si vous relisez le fichier plist que vous avez créé, il est nul lorsque vous l'imprimez. Suggérant que vous êtes en train d'écrire un fichier vide ou ne pas lire correctement ou ...
Je suppose en outre que votre intention est de remplacer le contenu de plist existant par un nouveau plist tout en gardant le même nom.
Et caveat emptor - Je suis nouveau à l'objectif C etc. Voici une façon de faire ce que je pense que vous essayez de faire.
// Implement viewDidLoad to do additional setup after loading the view,
// typically from a nib.
- (void)viewDidLoad {
NSBundle *bundle = [NSBundle mainBundle];
NSString *plistPath = [bundle pathForResource:@"TmpPList" ofType:@"plist"]; //Not NARC
//NSLog(@"plistPath : %@", plistPath);
//My plist is a simple array, but it could be an array of dictionary objects etc
NSMutableArray *arrayFromPList = [[NSMutableArray alloc] initWithContentsOfFile:plistPath]; //NARC
//NSLog(@"arrayFromPList : %@", arrayFromPList);
//Delete the arrays contents and put new contents
[arrayFromPList removeAllObjects];
//NSLog(@"arrayFromPList : %@", arrayFromPList);
//[arrayFromPList addObjectsFromArray:[NSArray arrayWithObjects:@"A", @"B", "@C", nil]];
//NSLog(@"arrayFromPList : %@", arrayFromPList);
[arrayFromPList setArray:[NSMutableArray arrayWithObjects:@"A", @"B", @"C", @"D", @"E", @"F", nil]];
//NSLog(@"arrayFromPList : %@", arrayFromPList);
/* */
//Write it out to the original file name
[arrayFromPList writeToFile:plistPath atomically:YES];
NSMutableArray *newArray = [[NSMutableArray alloc] initWithContentsOfFile:plistPath]; //NARC
NSLog(@"newArray : %@", newArray);
[arrayFromPList release];
[newArray release];
}
Je crée un dictionnaire de type plist (essayez également avec type array) nommé Data.plist. J'ai exécuté ce code (en ajoutant les objets personName et phoneNumbers) et mon plist reste vide. –
ce modèle de code a fonctionné pour moi. peut-être vous pourriez commencer par essayer des chaînes prédéfinies dans le tableau de valeurs: NSDictionary * plistDict = [NSDictionary dictionaryWithObjects: [NSArray arrayWithObjects: @ "ANAME", @ "aNumber", nul] forKeys: [NSArray arrayWithObjects: @ "Nom", @ "Téléphones", néant]]; NSData * plistData = [NSPropertyListSerialization dataFromPropertyList: plistDict format: NSPropertyListXMLFormat_v1_0 errorDescription: & errorDesc]; pour vous assurer que le problème est non avec les valeurs que vous transmettez? –