Questa non è una domanda su un problema pertinente. È una questione sulla quale cerco di approfondire la mia comprensione dell'Objective-C o di una più specifica Cocoa Foundation.Quando dovrei usare NSURL invece di NSString e viceversa?
Quando si tratta di caricare e scaricare file da un server alle mie app, sono costantemente diviso tra l'utilizzo di NSURL
o NSString
per tutto il percorso relativo. Ovviamente, quando c'è un'API esistente, la uso solo in base alle specifiche. Ma quando immagazzino i miei percorsi o creo classi personalizzate che li riguardano, sono confuso quale dei due sarebbe la scelta migliore.
NSString
è utilizzato ovunque e ha metodi di convenienza come stringByAppendingPathComponent:
e stringByAppendingPathExtension:
. Posso facilmente convertire in NSURL creando una nuova istanza con [NSURL URLWithString:@"string"]
e viceversa chiamando [url path]
in un'istanza NSURL. Ma la differenza è lì per una ragione, giusto?
La mia confusione aumenta quando guardo i file di intestazione di qualcosa come NSFileManager. Questi due metodi sono abbastanza vicine tra loro:
- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error;
- (BOOL)copyItemAtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL error:(NSError **)error NS_AVAILABLE(10_6, 4_0);
Perché dovrei scegliere di utilizzare uno sopra l'altro, soprattutto quando le conversioni tra i due sono così facilmente? E perché Apple ha il problema di creare API quasi identiche per l'utilizzo di entrambi i tipi di dati?
Se qualcuno ha informazioni più dettagliate su quando utilizzare NSURL anziché NSString per le proprie classi che gestiscono i percorsi dei file e gli URL remoti, si prega di condividere! Saluti.
E quando si fa riferimento ai file sul filesystem locale? – Jason
Cosa intendi? 'NSURL' ha un [vasto insieme di metodi che trattano gli URL del file system] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html#//apple_ref/doc/uid/20000301-SW25). – epologee
Così fa NSString. Sembra che NSURL sia generalmente preferito, ma mi chiedo se questo porta anche a file locali. – Jason