1 votes

Écriture dans le fichier plist de préférences multiples en même temps

J'ai besoin d'écrire environ 50 préférences dans un fichier .plist. Y a-t-il un moyen d'écrire une seule fois dans le fichier plist ? Mon code actuel comporte 50 lignes d'écriture par défaut.

do shell script "defaults write testing.testing mypref " & "Kjlk"
do shell script "defaults write testing.testing otherpref " & "something"
do shell script "defaults write testing.testing thirdpref " & "whateva"
...

1voto

demure Points 1301

La commande par défaut de Mac n'est pas conçue pour fonctionner ainsi.

Vous verrez une nette accélération en demandant à Applescript de créer (ou d'appeler) un script shell pour exécuter les 50 commandes. Vous pouvez envelopper les deux versions du script dans un appel à date ou utiliser la fonction time pour mesurer le temps du script shell si vous n'êtes pas sûr de l'origine du retard sur votre Mac.

La grande partie du retard sera probablement due à la boucle d'Applescript puis à la création d'un environnement pour chaque script à exécuter. En écrivant un seul script, non seulement le démarrage sera réduit à 1/50 du temps, mais il s'exécutera probablement beaucoup plus rapidement dans l'ensemble.

Si vous le souhaitez vraiment, vous pourriez vous écrire une fonction pour analyser plusieurs entrées; mais il est probablement plus facile pour vous d'avoir simplement 50 lignes de script shell.

0voto

Comme l'a mentionné la réponse de demure, une seule commande do shell script serait plus rapide:

do shell script "defaults write testing.testing mypref Kjlk
defaults write testing.testing otherpref something
defaults write testing.testing thirdpref whateva"

Vous pouvez également utiliser System Events pour modifier des plists:

tell application "System Events" to tell contents of property list file "/tmp/test.plist"
    make new property list item at end with properties {kind:string, name:"key", value:"value"}
    make new property list item at end with properties {kind:string, name:"key2", value:"value2"}
    set value of property list item "key2" to "value3"
end tell

Les deux ont pris environ 0,5 seconde pour ajouter 100 nouvelles clés. Plusieurs commandes do shell script ont pris environ 2 secondes.

-1voto

87as Points 1

Si vous le vouliez vraiment, vous pourriez écrire vous-même une fonction pour analyser plusieurs entrées

Merci. Je pense que je vais créer un script shell.

Je n'ai aucune idée de ce que signifie la citation ci-dessus.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X