Applescript che modifica il valore in plist

0

Ho uno script che sta passando valori a un plist, funziona bene, ma vorrei cambiare alcuni valori senza rimuovere tutto il resto. Avevo uno script per questo ma non riesco a trovarlo affatto.

Ecco il mio script che crea il valore

tell application "System Events"
    set the parent_dictionary to make new property list item with properties {kind:record}
    set the plistfile_path to "~/Desktop/MY_DATA.plist"
    set this_plistfile to ¬
        make new property list file with properties {contents:parent_dictionary, name:plistfile_path}
    make new property list item at end of property list items of contents of this_plistfile ¬
        with properties {kind:string, name:"thename", value:theName}
    make new property list item at end of property list items of contents of this_plistfile ¬
        with properties {kind:string, name:"creationDate", value:creationDate}
    make new property list item at end of property list items of contents of this_plistfile ¬
        with properties {kind:string, name:"serialNumber", value:serialNumber}
    make new property list item at end of property list items of contents of this_plistfile ¬
        with properties {kind:string, name:"Email", value:fullEmail}
    make new property list item at end of property list items of contents of this_plistfile ¬
        with properties {kind:string, name:"IPAddress", value:IPAddress}
end tell

ecco cosa ho scritto per modificare il valore, ma il problema è che il plist avrà solo il nuovo valore e tutte le altre proprietà saranno rimosse

set theName to "demo"

tell application "System Events"
    set the parent_dictionary to make new property list item with properties {kind:record}
    set the plistfile_path to "~/Desktop/MY_DATA.plist"
    set this_plistfile to ¬
        make new property list file with properties {contents:parent_dictionary, name:plistfile_path}
    make new property list item at end of property list items of contents of this_plistfile ¬
        with properties {kind:string, name:"thename", value:theName}

end tell

come posso modificare parte del valore senza rimuovere gli altri?

    
posta Kevin 26.05.2018 - 13:45
fonte

1 risposta

1

In primo luogo, puoi semplificare lo script iniziale, quello utilizzato per creare il file di elenco delle proprietà, a questo:

    set plistR to {theName:"name", creationDate:"date", serialNumber:"serial #", fullEmail:"@", IPAddress:"1.2.3.4"}

    tell application "System Events"
        set plistf to make new property list file ¬
            with properties {name:"~/Desktop/MY_DATA.plist"}

        set plistf's value to plistR
    end tell

Quindi modificare un valore è semplice come cambiare un elemento nel record plistR e impostare plistf's value sul nuovo plistR :

    set plistR2 to {theName:"name2", creationDate:"date", serialNumber:"serial #", fullEmail:"@", IPAddress:"1.2.3.4"}

    tell application "System Events"
        set plistf to the property list file "~/Desktop/MY_DATA.plist"
        set plistf's value to plistR2
    end tell

Se non vuoi il fastidio di scrivere una dichiarazione di registrazione completamente nuova (immagina di avere, ad esempio, 1000 articoli e ne hai solo bisogno di cambiarne uno), puoi regolare un singolo elemento plist anche in questo modo:

    tell application "System Events"
        set plistf to property list file "~/Desktop/MY_DATA.plist"
        set the value of the property list item "theName" of plistf to "name3"
    end tell
    
risposta data 27.05.2018 - 03:49
fonte

Leggi altre domande sui tag