0 votos

Cambiar valor en plist de AppleScript

Tengo un script que es pasar valores a un plist, es un trabajo muy bien, pero me gustaría cambiar algunos de los valores sin la eliminación de todo lo demás. Yo solía tener un script para eso, pero no encontró nada.

Aquí está mi script que crear el valor

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

aquí está lo que escribí para cambiar el valor, pero el tema es el plist sólo tendrá el nuevo valor y todas las otras propiedades sería eliminado

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

¿cómo puedo cambiar el valor sin la eliminación de los otros ?

1voto

qarma Puntos 71

En primer lugar, usted puede simplificar su guión inicial-la que se utiliza para crear la lista de propiedades de archivo de esta:

    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

A continuación, el cambio de un valor es tan sencillo como cambiar un elemento en el registro plistR, y el establecimiento de plistf's value a la nueva 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

Si no quieren la molestia de escribir un nuevo registro de la declaración (imagínese que tiene, digamos, 1000 elementos y sólo es necesario un cambio de uno), puede ajustar una sola plist elemento también como este:

    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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X