Pergunta

WritEtofile: atomicamente, adiciona dados a um .plist existente? É possível modificar um valor em um .plista? O aplicativo deve ser recompilado para entrar em vigor a mudança?

Eu tenho uma lista .plista personalizada no meu aplicativo. A estrutura é como abaixo:

<array>
<dict>
    <key>Title</key>
    <string>MyTitle</string>
    <key>Measurement</key>
    <dict>
        <key>prop1</key>
        <real>28.86392</real>
        <key>prop2</key>
        <real>75.12451</real>
    </dict>
    <key>Distance</key>
    <dict>
        <key>prop3</key>
        <real>37.49229</real>
        <key>prop4</key>
        <real>58.64502</real>
    </dict>
</dict>
</array>

A tag de matriz contém vários itens com a mesma estrutura. Preciso adicionar itens ao .plista existente. Isso é possível? Eu posso escrever um uiview para fazer exatamente isso, se sim.

*EDIT - OK, eu apenas tentei WritEtofile, esperando que pelo menos tenha substituído se não fosse adicionar a ele. Estranhamente, o código a seguir seleciona caminho diferente ao ler e escrever.

NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

O arquivo .plista está no meu projeto. Eu posso ler disso. Quando escrevo para ele, ele está criando um arquivo .plista e salvando -o no meu /Users/.../library/! Isso faz sentido para alguém?

Foi útil?

Solução

Eu assumiria que o plist Isso vem com a aplicação é assumida read only - Está dentro do pacote de aplicativos.

Quaisquer atualizações são armazenadas no diretório específico do usuário, para que todo usuário tenha suas próprias modificações específicas.

Outras dicas

É claro que você pode criar e escrever seu próprio arquivo .plista. Por NSArray *arrayPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *userFile=[[arrayPath objectAtIndex:0] stringByAppendingString:@"/whatever.plist"]; , você pode escrever/editá -lo.

Mas também tenho a mesma pergunta: como edito o valor contra uma chave específica, em vez de substituir todo o arquivo .plista?

Por exemplo, se eu quiser alterar o valor "mytitle" para o título "título" em: <key>Title</key> <string>MyTitle</string> Para "girassol", como posso fazer isso com o código?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top