2009-11-18 3 views
1

J'ai un fichier plist avec la racine de type Array dans les ressources du projet xcode. Sur un clic de bouton je dois accéder à ce plist et trouver si le plist contient déjà l'article particulier sinon écrire le nouvel article (NSString) au plist.NSMutableArray writeToFile: retourne toujours NO sur le périphérique mais fonctionne correctement sur le simulateur

que je fais cela comme suit,

NSMutableArray *array = nil; 
NSDictionary *dictionary = nil; 
    path = [[NSBundle mainBundle] pathForResource:@"MyPlistName" ofType:@"plist"]; 
array = [[NSMutableArray alloc] initWithContentsOfFile:path]; 
dictionary = [self.dictionary objectForKey:@"tag"]; 

if(![array containsObject:dictionary]) 
{ 
    [array addObject:dictionary]; 
    if(![array writeToFile:path atomically:YES]) 
    { 
     NSLog(@".plist writing was unsucessfull"); 
    } 
    } 

Cela fonctionne pour moi sur le simulateur, mais quand je le lance sur l'appareil la writeToFile: méthode atomiquement semble revenir NO toujours.

j'ai même essayé avec NSArchiver même qui me semble revenir NO comme la valeur de retour

Quelqu'un peut-il dire ce que je fais mal ..

Cordialement,

Syed Yusuf

Répondre

6

Vous ne pouvez pas écrire dans l'ensemble de l'application, vous ne pouvez donc pas écrire dans un plist du répertoire Resources. Un bon moyen est de copier le plist depuis le répertoire Resource dans le répertoire Documents lors du premier lancement et d'y accéder dans le futur.

+0

Salut zaph, Je comprends ce qui n'allait pas. Merci beaucoup pour votre réponse. C'est de travailler pour moi maintenant. – user162612

1

J'ai créé cette question exactement pour que vous puissiez comprendre comment obtenir un chemin en écriture:

How can I get a writable path on the iPhone?

Copiez un document sur un chemin inscriptible et changer là.

+0

Salut Kendall, Merci pour le lien. C'était très utile. – user162612

Questions connexes