Question

Ma question est indiqué ci-dessus dans le titre mais je vais écrire ici à nouveau

Est-il possible de copier un autre plist dans le code de lot d'applications sage ??

Ceci est en fait un peu lié à ma question précédente;) Créer une liste de propriétés dictionnaire programmation

Mais depuis que je peux écrire le plist (et tester si je fais quelque chose de mal), je me demandais si je peux copier mon dossier écrit

[testBook writeTofile:@/Users/jack/testbook2.plist" atomically:NO];

à mon paquet d'applications dans le code (afin de pouvoir lire ici NSString *path = [[NSBundle mainBundle] bundlePath]; NSString *dataPath = [path stringbyAppendingPathcomponent:@"testbook2.plist"];

Une autre alternative est bon aussi bien, par exemple, si je peux lire mon plist directement d'un autre chemin au lieu du mainBundle

Était-ce utile?

La solution

Physiquement, oui il est possible parfois.

NO, NE PAS FAIRE ÇA !!

Ok ... La copie des choses dans votre App Bundle est mauvaise, votre paquet d'applications ne sont pas où vous conservez les paramètres ou les données. Vous devez penser à votre paquet d'applications en lecture seule. Vous devriez faire ceci pour plusieurs raisons:

  1. Alors que la plupart du temps un utilisateur sur un système Mac OS X a la permission d'écrire à une application parfois ils ne le font pas. Pensez à des enfants qui ne sont pas en utilisant des comptes d'administration, ou les déploiements de laboratoire dans les écoles.
  2. Il annulera CodeSigning. Si vous signez votre demande cela va changer la signature et briser le codesign, ce qui provoque toutes sortes de problèmes étranges (perdre toutes les autorisations pare-feu l'application a, indiquant à l'utilisateur de l'application a changé et leur demander la permission de porte-clefs à nouveau, etc). À l'avenir, cela peut aussi apparaître toutes sortes d'avertissements depuis la falsification d'une application est un grand drapeau rouge de sécurité.
  3. Il ne fonctionnera pas sur iPhone. Cela ne peut pas être un problème, mais si vous tous l'intention d'utiliser ce code sur un iPhone bundles les applications sont sandbox readonly

Le bon endroit pour mettre ce genre de choses est dans un sous-dossier du dossier Application Support

Autres conseils

Je ne sais pas exactement ce que vous faites, mais en fonction de votre application, vous pouvez utiliser le répertoire Application Support:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
if ([paths count] > 0) {
    NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"App Name"];
    // Create the directory if it doesn't exist, etc.
} else {
    NSLog(@"Fail!");
    // ...
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top