Video: Cara akses local storage di Files app buat iPhone dan iPad 2025
Dalam aplikasi iOS, fail digunakan sebagai cara untuk menyimpan dan memulihkan keadaan permainan aktif. Jika anda telah melakukan sebarang pengaturcaraan dalam sebarang bahasa (C, C ++, Java, C #, anda namakannya), anda telah menggunakan fail untuk membaca data dan menulis data. Objektif-C membolehkan anda untuk bekerja dengan fail-fail jugaFiles dalam iOS disusun ke dalam direktori.
Setiap aplikasi mendapat direktori tersendiri di mana aplikasi berada dan datanya boleh disimpan. Direktori ini dikenali sebagai kotak pasir aplikasinya.
Aplikasi adalah dilarang daripada mengakses atau membuat fail di luar kotak pasirnya. Apabila aplikasi perlu berfungsi dengan kenalan atau muzik pengguna, sistem perlu (dan tidak) membenarkan operasi berkaitan fail diperlukan untuk membaca atau mengubah suai stor data ini, yang berada di luar kotak pasir aplikasi.
Direktori kotak pasir ini diatur dalam satu set subdirektori. Apple menentukan bagaimana setiap subdirektori ini harus digunakan, seperti berikut:
-
The << nama apl >>. direktori apl adalah di mana aplikasinya boleh dilaksanakan dan semua fail dalam bungkusannya tinggal (seperti imej X dan O untuk Tic-Tac-Toe). Direktori Dokumen memegang data yang aplikasi anda tidak boleh dibuat semula, seperti dokumen atau kandungan yang dihasilkan oleh pengguna. Ini adalah direktori di mana aplikasi Tic-Tac-Toe menyelamatkan permainan, menyimpan fail SQLite, dan sebagainya. iTunes menyokong direktori ini, jadi apabila anda menyambungkan peranti anda ke Mac anda, data di sini akan disimpan.
-
Direktori Peti masuk dalam direktori Dokumen mempunyai makna yang istimewa. Direktori ini menyimpan fail yang apl
lain -
meminta aplikasi anda untuk dibuka. Sebagai contoh, program Mel menempatkan lampiran e-mel yang dikaitkan dengan aplikasi anda dalam direktori ini. Aplikasi anda boleh membaca dan memadam fail dalam direktori ini tetapi tidak boleh membuat fail baru atau menulis ke fail sedia ada. Direktori Perpustakaan digunakan untuk fail yang bukan fail data pengguna tetapi perlu disandarkan. Dengan pengecualian subdirektori bernama Caches (yang khusus untuk data aplikasi yang ingin disimpan untuk sementara waktu), fail di sini disandarkan oleh iTunes. Subdirektori tmp menjimatkan data sementara yang tidak perlu berterusan di antara aplikasi berjalan. Aplikasi anda harus mengeluarkan fail dari direktori ini apabila ia tidak lagi diperlukan. Sistem ini juga boleh membersihkan fail berlarutan dari direktori ini apabila apl anda tidak berjalan atau ruang cakera rendah. Kandungan direktori ini
-
tidak
-
disandarkan. Sekarang, lihat contoh cepat dalam Tic-Tac-Toe yang menunjukkan cara menulis dan membaca dari fail. Dalam contoh ini, gunakan fail untuk menyimpan dan memulihkan keadaan permainan. Apabila pengguna menyentuh Simpan Permainan, keadaan semasa permainan disimpan ke fail bernama SavedGames. data dalam direktori Dokumen dalam kotak pasir aplikasi (laluan ke fail ini telah ditetapkan menggunakan #define sebagai TTTGAMESESSIONSAVEDFILEPATH yang tetap dalam fail TTTGameSessionViewController h).
Jika pengguna keluar tanpa menyelesaikan permainan, dia boleh kembali ke skrin sesi permainan dan kembali ke permainan yang disimpan dengan memilih Game Restore.
Sekarang untuk beberapa kod. Kod berikut menunjukkan saveGame:
- (IBAction) saveGame: (id) pengirim {NSDictionary * savedGameDictionary = [activeGame toDictionary]; Ralat NSError *; NSData * jsonData = [NSJSONSerialization dataWithJSONObject: savedGameDictionary options: NSJSONWritingPrettyPrinted error: & error]; NSString * savedGameString = [[NSString alloc] initWithData: encoding jsonData: NSUTF8StringEncoding]; NSString * savedGamesFilePath = [NSHomeDirectory () stringByAppendingPathComponent: @TTTGAMESESSIONSAVEDFILEPATH]; [savedGameString writeToFile: savedGamesFilePath atom: encoding YES: NSUTF8StringEncoding error: NULL];}
Writing to a file is easy. Anda hanya membina nama laluan fail menggunakan kaedah stringByAppendingPathComponent pada objek yang mewakili direktori rumah aplikasinya (yang anda dapat dengan memanggil fungsi NSHomeDirectory). Kemudian [savedGameString writeToFile: savedGamesFilePath …] apakah tulisan sebenar.
Membaca dari fail juga mudah. Berikut ialah kod untuk memulihkanGame:
- (IBAction) restoreGame: (id) pengirim {NSString * savedGamesFilePath = [NSHomeDirectory () stringByAppendingPathComponent: @TTTGAMESESSIONSAVEDFILEPATH]; NSString * savedGameString = [NSString stringWithContentsOfFile: encoding savedGamesFilePath: NSUTF8StringEncoding error: NULL]; NSError * restoreError = nil; NSMutableDictionary * savedDictionary = [NSJSONSerialization JSONObjectWithData: [savedGameString dataUsingEncoding: NSUTF8StringEncoding] options: NSJSONReadingMutableContainers error: & restoreError]; activeGame = [[TTTGame alloc] initFromDictionary: savedDictionary]; TTTGameGrid * gameGrid = [activeGame getGameGrid]; jika (! [activeGame isActive]) [boardView disableInput]; [boardView setGrid: gameGrid]; [gameView redraw];}
Anda telah melihat bagaimana laluan ke fail dibuat menggunakan fungsi NSHomeDirectory untuk mendapatkan objek direktori rumah, dan kemudian menggunakan kaedah objek ini stringByAppendingPathComponent untuk membuat rentetan. Seterusnya, anda membaca keseluruhan fail ke dalam rentetan menggunakan [NSString stringWithContentsOfFile: savedGamesFilePath …], dan kemudian anda bebas untuk memproses rentetan seperti yang diperlukan.
