Domanda

Ecco il codice che sto usando:

NSFileManager* defaultMgr = [NSFileManager defaultManager];
if (![defaultMgr fileExistsAtPath:path]) {
 return nil;
}

dove percorso è un URL di un file sul sistema come: "file: // localhost / private / var / mobile / Applications / blahblahblah"

Questo si blocca con SIGABRT quando la chiamata a fileExistsAtPath: è fatta. Il file esiste, e forse il formato stringa non è quello che questo metodo preferirebbe, ma dovrebbe semplicemente tornare NO. Questo codice fa parte di una libreria molto popolare, e mentre io non sono strettamente bisogno di controllare l'esistenza del percorso, voglio davvero capire cosa sta succedendo qui, nel caso in cui io abbia mai bisogno di utilizzare questo metodo direttamente.

In particolare:

  1. è l'autore libreria con questo metodo in modo corretto?
  2. Come potrebbe un fermo o si aspettano un'eccezione da questo metodo?
    (La documentazione SDK non discutere quali eccezioni potrebbero essere gettato da questo metodo.)
  3. Questo è un bug che dovrei segnalare ad Apple?

Un altro dettaglio: Sto facendo funzionare questo sul mio dispositivo iPhone 4 con iOS 4.1

È stato utile?

Soluzione

Alcuni problemi vengono in mente:

1) NSFileManager lavora con percorsi non URL. Non c'è bisogno di "file: //".

2) Necessita NSStrings come @ "...".

3) Si dovrebbe cercare di mantenere filepaths all'interno sandbox dell'applicazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top