Esta no es una pregunta sobre un problema pertinente. Es una pregunta por la cual trato de profundizar mi comprensión de Objective-C o más específica Cocoa Foundation.¿Cuándo debería usar NSURL en lugar de NSString y viceversa?
Cuando se trata de cargar y descargar archivos de un servidor a mis aplicaciones, estoy constantemente dividido entre usar NSURL
o NSString
para todo lo relacionado con la ruta. Por supuesto, cuando hay una API existente, la utilizo de acuerdo con las especificaciones. Pero cuando almaceno mis propios caminos o creo clases personalizadas que tratan con ellos, me confundo cuál de los dos sería la mejor opción.
NSString
se utiliza en todas partes y tiene métodos de conveniencia como stringByAppendingPathComponent:
y stringByAppendingPathExtension:
. Puedo convertir fácilmente a NSURL creando una nueva instancia con [NSURL URLWithString:@"string"]
y al revés llamando al [url path]
en una instancia de NSURL. Pero la diferencia está ahí por una razón, ¿verdad?
Mi confusión crece cuando veo los archivos de encabezado de algo así como NSFileManager. Estos dos métodos son bastante próximos entre sí:
- (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);
qué iba a optar por utilizar uno sobre el otro, sobre todo cuando las conversiones entre los dos se hacen con tanta facilidad? ¿Y por qué Apple pasa por el problema de crear API casi idénticas para usar ambos tipos de datos?
Si alguien tiene una idea más profunda de cuándo usar NSURL en lugar de NSString para sus propias clases manejando rutas de archivos y direcciones URL remotas, ¡por favor comparta! Aclamaciones.
¿Qué pasa cuando se hace referencia a los archivos en el sistema de archivos local? – Jason
¿Qué quieres decir? 'NSURL' tiene un [amplio conjunto de métodos relacionados con las URL del sistema de archivos] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html#//apple_ref/doc/uid/20000301-SW25). – epologee
Lo mismo ocurre con NSString. Parece que generalmente se prefiere NSURL, pero me pregunto si eso también se traslada a los archivos locales. – Jason