Pergunta

A minha pergunta é referido acima no título, mas eu vou escrevê-lo aqui novamente

É possível copiar um plist diferente no código pacote de aplicativos sábio ??

Este é realmente um pouco relacionado na minha pergunta anterior;) Criar uma lista de propriedades dicionário programaticamente

Mas desde que eu posso escrever o plist (e teste se eu estou fazendo algo errado) Eu queria saber se posso copiar meu arquivo escrito

[testBook writeTofile:@/Users/jack/testbook2.plist" atomically:NO];

para o meu pacote de aplicativos em código (de modo que ele pode ler a partir daqui com NSString *path = [[NSBundle mainBundle] bundlePath]; NSString *dataPath = [path stringbyAppendingPathcomponent:@"testbook2.plist"];

Outra alternativa é tão bom assim, por exemplo, se eu puder ler meu plist diretamente de outro caminho em vez do mainBundle

Foi útil?

Solução

Fisicamente, sim, é possível, por vezes.

NO, não faça isso !!

Ok ... copiar o material em sua App Bundle é ruim, seu pacote aplicativo não é onde você guarda as configurações ou dados. Você deve pensar de seu pacote aplicativo como somente leitura. Você deve fazer isso por várias razões:

  1. Embora a maior parte do tempo um usuário em um sistema Mac OS X tem permissão para gravar um aplicativo às vezes não. Pense sobre as crianças que não estão usando contas de administrador, ou implantações de laboratório em escolas.
  2. É invalidará codesigning. Se você assinar seu aplicativo isso vai mudar a assinatura e quebrar o codesign, causando todos os tipos de problemas estranhos (perdendo todas as permissões de firewall O aplicativo tem, informando ao usuário o aplicativo mudou e pedindo-lhes permissão chaveiro novamente, etc). No futuro, esta também pode aparecer todos os tipos de avisos desde adulteração de um aplicativo é uma bandeira grande segurança vermelho.
  3. Não vai funcionar no iPhone. Isso pode não ser um problema, mas se você a cada pretende usar este código em um iPhone os aplicativos pacotes são sandboxed somente leitura

O lugar correto para colocar este tipo de material é em uma pasta sub do Application Support pasta

Outras dicas

Eu não sei exatamente o que você está fazendo, mas dependendo do seu aplicativo, você pode querer usar o diretório Application Support:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
if ([paths count] > 0) {
    NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"App Name"];
    // Create the directory if it doesn't exist, etc.
} else {
    NSLog(@"Fail!");
    // ...
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top