2012-12-10 13 views
5

Desidero separare le risorse, i file di pennini e i file di localizzazione in un pacchetto riutilizzabile comune. E così ho creato un pacchetto per la mia applicazione ios e le risorse specificate da includere nel bundle usando le fasi di compilazione, copia le risorse del bundle. Ma ora, se provo a caricare il pacchetto, non riesco a caricare il pacchetto. Provo a utilizzare [NSBundle allBundles] e l'array mostra solo il pacchetto di app principale.Utilizzo di NSBundle per caricare le risorse

Ho anche provato a enumerare la directory per NSApplicationPath ma ancora l'unico pacchetto disponibile è il pacchetto predefinito dell'applicazione. Volevo imparare questa tecnica e farne uso per separare le mie risorse. Qualsiasi aiuto e suggerimento sarebbe molto apprezzato. Grazie

risposta

6
[NSBundle bundleWithPath:[NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] bundlePath], pathToYourBundleWithinTheDotAppDirectory]; 

Fammi sapere come vai.

+1

Non carica il pacchetto. Sembra che il pacchetto stesso si trovi all'interno del pacchetto principale dell'applicazione. Quindi ho dovuto ottenere il percorso del bundle usando [[NSBundle mainBundle] pathForResource: @ "MyBundle" ofType: @ "bundle"] e quindi utilizzare il percorso per caricare il pacchetto utilizzando bundleWithPath: metodo – Sandeep

+0

Tuttavia, ho aggiunto un'immagine nel pacchetto e provato a caricare l'immagine usando pathForResource: ofType: method ma il metodo è nil e poi ho navigato nella cartella dell'applicazione del simulatore e ho visto che l'immagine non è stata copiata. – Sandeep

+1

Potrebbe essere necessario aggiungere una fase "Copia file" alla build. – hd1

2

provare qualcosa di simile:

NSBundle* bundle=[NSBundle bundleWithIdentifier: @"bundle name"]; 

E assicurarsi di aver selezionato queste opzioni quando si è trascinato il bundle al progetto:

enter image description here

+0

Ho creato un pacchetto aggiungendo il target all'applicazione esistente. – Sandeep

1

Per i progetti con un fascio, io uso:

// in this example, we load test.png from the bundle 
NSString *pathToResource = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"png"]; 

ciò che rende questo s o conveniente è che quando si hanno file localizzati, questo fornisce il percorso del file per le impostazioni locali dell'utente corrente. Questo è utile poiché i file localizzati non si trovano nella directory principale, ma sono piuttosto nelle proprie sottocartelle (ad esempio, i file localizzati in inglese si trovano nella sottocartella @ "it.lproj") e chiamarli per nome è una seccatura perché è necessario il percorso completo. Questo metodo ottiene il percorso per te.

Problemi correlati