Domanda

La mia domanda è indicato sopra nel titolo, ma lo scrivo qui di nuovo

E 'possibile copiare un plist diverso nel codice bundle dell'applicazione saggio ??

Questo è in realtà un po 'legati alla mia domanda precedente;) Creare un elenco di proprietà dizionario programmazione

Ma dato che posso scrivere il plist (e testare se sto facendo qualcosa di sbagliato) Mi chiedevo se posso copiare il mio file scritto

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

per il mio fagotto applicazione nel codice (in modo che possa leggere da qui con NSString *path = [[NSBundle mainBundle] bundlePath]; NSString *dataPath = [path stringbyAppendingPathcomponent:@"testbook2.plist"];

Un'altra alternativa è un bene così per esempio se riesco a leggere il mio plist direttamente da un altro percorso invece del mainBundle

È stato utile?

Soluzione

Fisicamente, sì è possibile a volte.

NO, non farlo !!

Va bene ... la copia di roba nel vostro App Bundle è male, il vostro pacco applicazione non è dove si tiene impostazioni o dati. Si dovrebbe pensare del proprio bundle app come sola lettura. Si dovrebbe fare questo per diversi motivi:

  1. Mentre la maggior parte del tempo che un utente su un sistema Mac OS X ha permesso di scrivere un app a volte non lo fanno. Pensate a bambini che non utilizzano gli account di amministratore, o implementazioni di laboratorio nelle scuole.
  2. Si annulla codesigning. Se si firma l'applicazione questo cambierà la firma e rompere il codesign, causando ogni sorta di problemi strani (perdendo tutte le autorizzazioni del firewall l'applicazione ha, dicendo che l'utente l'applicazione è cambiato e chiedendo loro il permesso portachiavi di nuovo, ecc). In futuro questo può anche pop-up tutti i tipi di avvertimenti dal manomissione un app è una bandiera rossa grande sicurezza.
  3. Non funziona su iPhone. Questo potrebbe non essere un problema, ma se ogni intenzione di usare questo codice su un iPhone le applicazioni bundle sono in modalità sandbox in sola lettura

Il posto giusto per mettere questo genere di cose è in una sottocartella della cartella Application Support

Altri suggerimenti

Non so esattamente quello che stai facendo, ma a seconda dell'applicazione in uso, si potrebbe desiderare di utilizzare la rubrica 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!");
    // ...
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top