Scrivendo per plistare più preferenze contemporaneamente

1

Ho bisogno di scrivere circa 50 preferenze su un file .plist. C'è un modo per scrivere solo una volta per plistare il file? Il mio codice corrente ha 50 righe di scrittura predefinite.

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"
...
    
posta 87as 03.06.2013 - 13:21
fonte

3 risposte

1

Il comando default di Mac non è progettato per funzionare in questo modo.

Vedrai una notevole accelerazione facendo in modo che Applescript faccia (o chiami) uno script di shell per emettere tutti e 50 i comandi. Puoi racchiudere entrambe le versioni dello script in una chiamata date o utilizzare la funzione time per cronometrare lo script della shell se non sei sicuro di dove si trova il ritardo sul tuo Mac.

La stragrande maggioranza del ritardo sarà probabilmente il loop di Applescript e quindi ogni un ambiente per ogni script da eseguire. Scrivendo uno script, non solo l'avvio sarà ridotto a 1/50 del tempo, ma sarà probabilmente molto più rapido.

Se lo volessi davvero, potresti scrivere una funzione per analizzare più input; ma probabilmente è più facile per te avere solo 50 righe di script di shell.

    
risposta data 03.06.2013 - 15:05
fonte
0

Come la risposta di Durey ha menzionato, un comando di script di shell singolo dovrebbe essere più veloce:

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

Puoi anche usare Eventi di sistema per modificare i 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

Entrambi hanno impiegato circa 0,5 secondi aggiungendo 100 nuove chiavi. Più comandi di shell shell richiedono circa 2 secondi.

    
risposta data 04.06.2013 - 12:08
fonte
-1

If you really wanted to, you could write yourself a function to parse multiple inputs

Grazie. Penso che creerò uno script di shell.

Non ho idea di cosa significhi sopra citazione.

    
risposta data 03.06.2013 - 19:13
fonte

Leggi altre domande sui tag