Muszę czytać i zapisywać dane do / z pliku tekstowego, ale nie byłem w stanie dowiedzieć się, jak to zrobić.
Znalazłem ten przykładowy kod w iBooku Swift, ale nadal nie wiem, jak zapisywać lub odczytywać dane.
import Cocoa
class DataImporter
{
/*
DataImporter is a class to import data from an external file.
The class is assumed to take a non-trivial amount of time to initialize.
*/
var fileName = "data.txt"
// the DataImporter class would provide data importing functionality here
}
class DataManager
{
@lazy var importer = DataImporter()
var data = String[]()
// the DataManager class would provide data management functionality here
}
let manager = DataManager()
manager.data += "Some data"
manager.data += "Some more data"
// the DataImporter instance for the importer property has not yet been created”
println(manager.importer.fileName)
// the DataImporter instance for the importer property has now been created
// prints "data.txt”
var str = "Hello World in Swift Language."
//reading
robi dokładnie to.Zakładając, że przeniosłeś plik tekstowy
data.txt
do swojego projektu Xcode (przeciągnij i upuść i zaznacz „Kopiuj pliki, jeśli to konieczne”), możesz wykonać następujące czynności, tak jak w Objective-C:Aktualizacja:
Do odczytu pliku z pakietu (iOS) możesz użyć:
Aktualizacja dla Swift 3:
Dla Swift 5
źródło
Xcode 8.x • Swift 3.x lub nowszy
źródło
Nowa, prostsza i zalecana metoda: Apple zaleca używanie adresów URL do obsługi plików, a inne rozwiązania tutaj wydają się przestarzałe (patrz komentarze poniżej). Oto nowy prosty sposób czytania i pisania za pomocą adresów URL (nie zapomnij poradzić sobie z możliwymi błędami adresów URL):
Swift 5+, 4 i 3.1
źródło
Xcode 8, Swift 3 sposób na odczyt pliku z pakietu aplikacji:
Oto wygodne rozszerzenie kopiuj i wklej
Na przykład
Prawie zawsze potrzebujesz tablicy linii:
źródło
Chcę ci pokazać tylko pierwszą część, czyli przeczytaną . Oto jak możesz po prostu przeczytać:
Swift 3:
Swift 2:
źródło
Najprostszy sposób na odczytanie pliku w Swift> 4.0
źródło
Obecna zaakceptowana powyżej odpowiedź Adama zawierała dla mnie pewne błędy, ale oto, jak przerobiłem jego odpowiedź i sprawiłem, że to działa dla mnie.
źródło
Może się okazać, że to narzędzie jest przydatne nie tylko do odczytu z pliku w Swift, ale także do analizy danych wejściowych: https://github.com/shoumikhin/StreamScanner
Po prostu określ ścieżkę pliku i ograniczniki danych w następujący sposób:
Mam nadzieję że to pomoże.
źródło
Musiałem przekodować w ten sposób:
źródło
W przykładzie funkcji (odczyt | zapis) DocumentsFromFile (...) z pewnymi opakowaniami funkcji z pewnością wydaje się mieć sens, ponieważ wszystko w OSx i iOS wydaje się wymagać utworzenia trzech lub czterech głównych klas oraz szeregu właściwości, skonfigurowanych, połączonych, utworzono instancję i ustawiono, aby napisać „Cześć” do pliku w 182 krajach.
Jednak te przykłady nie są wystarczająco kompletne, aby można je było wykorzystać w prawdziwym programie. Funkcja zapisu nie zgłasza żadnych błędów podczas tworzenia lub zapisu do pliku. Po przeczytaniu nie sądzę, że dobrym pomysłem jest zwrócenie błędu, że plik nie istnieje jako ciąg znaków, który powinien zawierać odczytane dane. Chcesz wiedzieć, że to się nie udało i dlaczego, za pomocą mechanizmu powiadamiania, takiego jak wyjątek. Następnie możesz napisać kod, który pokazuje, na czym polega problem i pozwala użytkownikowi go naprawić lub „poprawnie” zepsuć program w tym momencie.
Nie chcesz po prostu zwracać ciągu z napisem „Plik błędu nie istnieje”. Następnie należy za każdym razem szukać błędu w łańcuchu wywołania funkcji i tam go obsłużyć. Prawdopodobnie nie możesz naprawdę stwierdzić, czy łańcuch błędu został odczytany z rzeczywistego pliku, czy też został wygenerowany z Twojego kodu.
Nie można nawet wywoływać odczytu w ten sposób w szybkich wersjach 2.2 i Xcode 7.3, ponieważ NSString (contentOfFile ...) zgłasza wyjątek. Jest to błąd czasu kompilacji, jeśli nie masz żadnego kodu, aby go złapać i coś z nim zrobić, na przykład wydrukować go na standardowe wyjście, lub lepiej, wyskakujące okno błędu lub stderr. Słyszałem, że Apple odchodzi od try catch i wyjątków, ale będzie to długi krok i bez tego nie będzie możliwe pisanie kodu. Nie wiem, skąd pochodzi argument & error, być może starsza wersja, ale NSString.writeTo [Plik | URL] nie ma obecnie argumentu NSError. Są one zdefiniowane w ten sposób w NSString.h:
Ponadto plik nieistniejący jest tylko jednym z wielu potencjalnych problemów, które Twój program może odczytać, takich jak problem z uprawnieniami, rozmiar pliku lub wiele innych problemów, dla których nie chcesz nawet kodować procedury obsługi każdy z nich. Najlepiej po prostu założyć, że wszystko jest poprawne i złapać i wydrukować lub obsłużyć wyjątek, jeśli coś pójdzie nie tak, poza tym w tym momencie tak naprawdę nie masz wyboru.
Oto moje przepisania:
źródło
Mój plik txt działa w ten sposób:
źródło
Aby uniknąć nieporozumień i dodać łatwości, stworzyłem dwie funkcje do odczytu i zapisu ciągów do plików w katalogu dokumentów. Oto funkcje:
Oto przykład ich użycia:
Mam nadzieję że to pomoże!
Wersja Xcode: 6.3.2
źródło
Najnowszy kod swift3
Możesz odczytać dane z pliku tekstowego, użyj poniższego kodu To mój plik tekstowy
}
Możesz użyć tego kodu, aby uzyskać dane z tekstowego pliku json w swift3
źródło
Działa to z Swift 3.1.1 w systemie Linux:
źródło
napisz w ViewDidLoad
źródło
Wcześniejsze rozwiązania odpowiadają na pytanie, ale w moim przypadku usunięcie starej zawartości pliku podczas pisania było problemem.
Stworzyłem więc fragment kodu do zapisu do pliku w katalogu dokumentów bez usuwania poprzedniej zawartości. Prawdopodobnie potrzebujesz lepszej obsługi błędów, ale uważam, że to dobry punkt wyjścia. Swift 4. Typage:
Metody pomocnicze:
źródło
Swift 3.x - 5.x
Najlepszym przykładem jest utworzenie lokalu
Logfile
z rozszerzeniem,.txt
które będzie widoczne i widoczne w"Files App"
z bieżącą datą i godziną jako nazwą plikuwystarczy dodać ten kod w info.plist włączyć te dwie funkcje
i ta funkcja poniżej
źródło
źródło
Xcode 8.3.2 Swift 3.x . Korzystanie z NSKeyedArchiver i NSKeyedUnarchiver
Odczytywanie pliku z dokumentów
Zapisz plik do dokumentów
źródło