To nie jest pytanie o istotny problem. To jest pytanie, na podstawie którego staram się pogłębić wiedzę na temat Objective-C lub bardziej konkretnej Fundacji Kakao.Kiedy należy używać NSURL zamiast NSString i na odwrót?
Kiedy mam do czynienia z przesyłaniem i pobieraniem plików z serwera do moich aplikacji, ciągle jestem rozdarty między używaniem NSURL
lub NSString
dla wszystkich powiązanych ścieżek. Oczywiście, gdy istnieje już API, używam go zgodnie ze specyfikacją. Ale kiedy przechowuję własne ścieżki lub tworzę niestandardowe klasy, które sobie z nimi radzą, jestem zdezorientowany, który z nich byłby lepszym wyborem.
NSString
jest używany wszędzie i ma wygodne metody, takie jak stringByAppendingPathComponent:
i stringByAppendingPathExtension:
. Mogę łatwo przekonwertować na NSURL, tworząc nową instancję z [NSURL URLWithString:@"string"]
i na odwrót, wywołując [url path]
na instancji NSURL. Ale różnica istnieje z jakiegoś powodu, prawda?
Moje zamieszanie rośnie, gdy patrzę na pliki nagłówkowe podobne do NSFileManager. Te dwie metody są dość blisko siebie:
- (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);
Dlaczego wybrałbym używać jednego nad drugim, zwłaszcza gdy konwersje między nimi są tak łatwo? I dlaczego Apple ma problemy z utworzeniem prawie identycznych interfejsów API do korzystania z obu typów danych?
Jeśli ktoś ma głębszy wgląd w to, kiedy używać NSURL zamiast NSString do własnych klas obsługi ścieżek plików i zdalnych adresów URL, proszę udostępnij! Twoje zdrowie.
Co powiesz na odniesienia do plików w lokalnym systemie plików? – Jason
Co masz na myśli? 'NSURL' ma [obszerny zestaw metod dotyczących adresów URL systemów plików] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html#//apple_ref/doc/uid/20000301-SW25). – epologee
Tak samo jest z NSString. Wygląda na to, że NSURL jest na ogół preferowany, ale zastanawiam się, czy to samo dotyczy plików lokalnych. – Jason