2012-06-12 12 views
7

ho provato:Come si ottiene il percorso sul desktop dell'utente in XCode?

path = @"~/Desktop/files/text.plist"; 
NSDictionary *aDict = [NSDictionary dictionaryWithContentsOfFile:path]; 

ResultPath: ~/Desktop/files/text.plist

path = @"$(HOME)/Desktop/files/text.plist"; 
NSDictionary *aDict = [NSDictionary dictionaryWithContentsOfFile:path]; 

ResultPath: $ (HOME) /Desktop/files/text.plist

path = [NSHomeDirectory() stringByAppendingString:@"/Desktop/files/text.plist"]; 
NSDictionary *aDict = [NSDictionary dictionaryWithContentsOfFile:path]; 

ResultPath:/Users/my_name/Libreria/Application Support/iPhone Simulator/5.1/Applications/639DC66A-7092-4ECB-9E48-59935AC1C394/Desktop/files/text.plist

  1. C'è un modo per arrivare al percorso del desktop dell'Utente in XCode?
  2. Le variabili di ambiente possono essere utilizzate nell'esempio sopra e come?

EDIT: Ulteriori chiarimenti sul 2 ° domanda: Proprio come ci sono variabili d'ambiente (o macro) nella console MAC, possono questi essere utilizzato anche all'interno del codice? Se possono essere utilizzati, qualcuno può aiutare con un esempio? come $ HOME_DIRECTORY o qualcosa del genere.

+2

Sembra che tu stia scrivendo un'applicazione iOS. Non ci sono desktop in iOS, quindi non sono sicuro di cosa ti aspetti di arrivare qui! – duskwuff

+3

Non vedo proprio come tutto questo sia collegato a Xcode ... –

+1

@duskwuff sto scrivendo un'app per iOS che deve essere eseguita in simulatore * solo * (sì, ci sono app come questo - pensa agli ambienti di test). In quanto tale ho bisogno di ottenere il percorso al desktop dell'utente sul Mac. –

risposta

21

È possibile specificare desktop nel percorso di ricerca:

NSArray * paths = NSSearchPathForDirectoriesInDomains (NSDesktopDirectory, NSUserDomainMask, YES); 
NSString * desktopPath = [paths objectAtIndex:0]; 

Il vantaggio di fare in questo modo è che non fa alcuna ipotesi su come il l'utente ha configurato il suo Mac, se la sua cartella desktop non si trova nella posizione predefinita, questa troverà ancora quella corretta.

+0

Solo FYI, per iOS 8 e Xcode 6, Apple sembra aver cambiato alcune cose e questo produce un percorso che non esiste e non è il desktop degli utenti Mac: '/ Users/username/Libreria/Sviluppatore/CoreSimulator/Devices/C4BE4D04-304E-44EF-8665-B2DF0AE75EBC/data/Containers/Data/Application/167E7298-E774-4CFF-B252-F61AC60E9027/Desktop' – newenglander

+0

@newenglander Questo perché non esiste un concetto reale di una cartella 'Desktop' su un dispositivo iOS a causa del file system sandbox. L'app è in esecuzione sul simulatore, quindi mostra la versione del desktop del simulatore. Prova a eseguire lo stesso codice su un dispositivo reale e prova a inserire un file in questa cartella "Desktop". Annota il messaggio di errore. – Abizern

-2

Questo dovrebbe farlo per il vostro # 1 domanda:

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

Può spiegare ulteriormente la seconda domanda? :)

+0

Questa risposta non sembra funzionare. Mi dà lo stesso percorso della terza opzione che ho provato sopra. –

+0

Ho apportato una modifica spiegando la seconda parte della cartella documenti –

+3

≠ cartella desktop –

1

Questo dovrebbe funzionare:

NSString *pathToDesktop = [NSString stringWithFormat:@"/Users/%@/Desktop/text.txt", NSUserName()]; 
+0

grazie a mil. lavori. –

+0

Ciò presuppone che la cartella Desktop si trovi in ​​una posizione particolare. L'utente può cambiarlo e quindi si romperà. – Abizern

+0

@Abizern - Puoi spostare il desktop in un'altra posizione, ma ci sarà sempre un alias situato in/Users/nome_utente/desktop, quindi questo metodo funzionerà ancora. – pasawaya

1

Uso questa istruzione, presuppone che la cartella Desktop si trovi nella posizione normale.

[NSURL fileURLWithPath:[NSHomeDirectory()stringByAppendingPathComponent:@"Desktop"]; 
Problemi correlati