Czy ktoś może mi wyjaśnić, czym jest katalog dokumentów w aplikacji na iOS i kiedy go używać?
Oto, w co obecnie wierzę:
Wydaje mi się, że jest to centralny folder, w którym użytkownik może przechowywać wszystkie pliki potrzebne do aplikacji.
To byłaby inna lokalizacja niż ta, w której Core Data przechowuje swoje dane?
Wygląda na to, że każda aplikacja ma swój własny katalog dokumentów.
Mogę utworzyć podkatalog w katalogu dokumentów, taki jak katalog dokumentów / obrazy lub katalog dokumentów / filmy?
ios
nsdocumentdirectory
user798719
źródło
źródło
Odpowiedzi:
Twoja aplikacja (na urządzeniu bez jailbreaka) działa w środowisku „piaskownicy”. Oznacza to, że może uzyskiwać dostęp tylko do plików i katalogów w ramach własnej zawartości. Na przykład Documents and Library .
Zobacz przewodnik programowania aplikacji dla systemu iOS .
Aby uzyskać dostęp do katalogu Dokumenty w piaskownicy aplikacji, możesz użyć:
iOS 8 i nowsze, jest to zalecana metoda
jeśli potrzebujesz obsługi iOS 7 lub wcześniejszej
Ten katalog Documents umożliwia przechowywanie plików i podkatalogów, które tworzy lub może potrzebować aplikacja.
Aby uzyskać dostęp do plików w katalogu biblioteki w piaskownicy aplikacji, użyj (zamiast
paths
powyższego):źródło
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
zawsze poda poprawny katalog!Zmieniło się to w iOS 8. Zobacz następującą uwagę techniczną: https://developer.apple.com/library/ios/technotes/tn2406/_index.html
Sankcjonowany sposób Apple (z powyższego linku) jest następujący:
źródło
Nie mogłem znaleźć kodu w dokumencie sugerowanym przez zaakceptowaną odpowiedź, ale znalazłem zaktualizowany odpowiednik tutaj:
Podręcznik programowania systemu plików :: Dostęp do plików i katalogów »
Odradza korzystanie z NSSearchPathForDirectoriesInDomain:
Oto kilka innych przydatnych stałych katalogowych do zabawy. Bez wątpienia nie wszystkie z nich są obsługiwane w systemie iOS. Możesz także użyć funkcji NSHomeDirectory (), która:
Z NSPathUtilities.h
I na koniec kilka wygodnych metod w kategorii NSURL http://club15cc.com/code/ios/easy-ios-file-directory-paths-with-this-handy-nsurl-category
źródło
Swift 3 i 4 jako zmienna globalna:
Jako rozszerzenie FileManager:
źródło
documentDirectoryURL
lub po prostudocumentDirectory
i polegać na typie. Podoba mi się pomysł statycznego ograniczania go doFileManager
statycznej właściwości w rozszerzeniu.Oprócz
Documents
folderu iOS umożliwia również zapisywanie plików wtemp
iLibrary
folderach .Aby uzyskać więcej informacji na temat tego, którego użyć, zobacz ten link w dokumentacji:
źródło
Dodanie rozszerzenia do FileManagera dla tego rodzaju niezręcznego wywołania może być czystsze, jeśli nic więcej, dla porządku. Coś jak:
źródło
Możesz uzyskać dostęp do katalogu dokumentów za pomocą tego kodu, który jest zasadniczo używany do przechowywania pliku w formacie plist:
źródło
Oto przydatna mała funkcja, która sprawia, że używanie / tworzenie folderów iOS jest trochę łatwiejsze.
Przekażesz mu nazwę podfolderu, zwróci pełną ścieżkę z powrotem do Ciebie i upewni się, że katalog istnieje.
(Osobiście trzymam tę statyczną funkcję w mojej klasie AppDelete, ale być może nie jest to najmądrzejsze miejsce, aby ją umieścić.)
Oto jak można to nazwać, aby uzyskać „pełną ścieżkę” do podkatalogu MySavedImages:
A oto pełna funkcja:
Korzystając z tej małej funkcji, łatwo jest utworzyć katalog w katalogu Dokumenty aplikacji (jeśli jeszcze nie istnieje) i zapisać w nim plik.
Oto jak utworzę katalog i zapiszę w nim zawartość jednego z moich plików graficznych:
Mam nadzieję że to pomoże !
źródło
Podobnie jak inni wspomnieli, Twoja aplikacja działa w środowisku piaskownicy i możesz używać katalogu dokumentów do przechowywania obrazów lub innych zasobów, których może używać Twoja aplikacja, np. pobieranie plików offline-d zgodnie z preferencjami użytkownika - Podstawy systemu plików - Dokumentacja Apple - Katalog, którego należy użyć do przechowywania plików specyficznych dla aplikacji
Zaktualizowany do Swift 5, możesz użyć jednej z tych funkcji, zgodnie z wymaganiami -
Stosowanie:
źródło