Video: NativeScript Tutorial for Beginners - Build iOS, Android and Web Apps with NativeScript and Angular 2024
Notasi Objek JavaScript (JSON) telah menjadi standar de facto dalam hal mewakili data di aplikasi iOS. Anda dapat menggunakan JSON untuk mentransfer data ke seluruh web dan sebagai format untuk menyimpan dan mengambil data lama. JSON mudah terbaca dan mudah dipahami oleh mesin. Data di JSON bisa berada di salah satu dari dua struktur:
-
Objek yang terdiri dari pasangan nama-nilai yang tidak dipesan. Setiap nama-nilai sesuai dengan atribut objek. Setiap pasangan nama-nilai dapat disarangkan, seandainya atribut yang diwakili bersifat hirarkis.
-
Kumpulan nilai yang dipesan. Setiap nilai dalam array bisa berupa skalar (nilai Boolean, string, atau number), objek, atau array.
Di Tic-Tac-Toe, JSON mewakili keadaan permainan. Status ini terdiri dari:
-
Pemain saat ini (pemain 1 atau pemain 2) diwakili sebagai bilangan bulat (0 untuk Player 1, dan 1 untuk Player 2).
-
Keadaan permainan - apakah itu aktif atau lengkap; jika sudah lengkap, apakah itu menang atau ditarik; dan jika menang, oleh siapa.
Negara bagian juga diwakili sebagai bilangan bulat, dengan Inactive being -1, Active being 0, Won menjadi 1, dan Draw menjadi 2.
-
Keadaan grid - yaitu simbol apa hadir di masing-masing kuadrat di grid. Perhatikan bahwa simbol diwakili sebagai nilai integer 0, 1, dan 2, yang masing-masing berlaku untuk Blank, X, dan O.
-
Simbol saat ini (yang akan diputar pada langkah selanjutnya). Di sini (dan hanya untuk memvariasikan contohnya), kami mewakili simbol itu sebagai string "X" atau string "O" atau huruf kosong ("").
-
Jumlah putar (jumlah gerakan yang dilakukan pada titik saat ini dalam permainan) direpresentasikan sebagai bilangan bulat.
Dalam kode ini, kami menunjukkan objek JSON yang sesuai dengan Game Tic-Tac-Toe yang aktif dan aktif:
{"TTTGameKeyCurrentPlayer": 0, "TTTGameKeyState": 0, "TTTGameKeyGridState": "2, 1, 2 JSON dengan mudah memetakan ke struktur data yang tersedia (seperti array, struktur, dan objek) dalam bahasa Inggris, "TTTGameKeyCurrentSymbol": "X", "TTTGameKeyPlaycount": 8}
hampir setiap bahasa pemrograman. Bentuk objek dari JSON dengan mudah memetakan ke objek bahasa pemrograman atau struktur, sedangkan bentuk array dari JSON dapat memetakan ke array, vektor, daftar, atau urutan, pada dasarnya apapun struktur data dapat menyimpan kumpulan benda yang dipesan.
Di Tic-Tac-Toe, objek JSON yang sesuai dengan keadaan permainan dipetakan ke NSDictionary, karena objek NSDictionary juga terdiri dari pasangan nilai nested name.Akibatnya, ketika Anda harus menyimpan keadaan permainan, Anda mendapatkan negara sebagai objek NSDictionary dan kemudian mengubahnya menjadi string JSON.
Saat Anda memulihkan keadaan permainan, Anda melakukan hal yang sebaliknya - Anda membaca dalam data JSON dan mengubahnya menjadi objek NSDictionary dan kemudian menggunakan NSDictionary untuk mengembalikan permainan ke keadaan tersimpan.
Contoh berikut menunjukkan konversi ini dari objek kamus ke JSON dan dari objek data JSON ke string (dari metode saveGame di kontrol tampilan Game Session - file TTTGameSessionViewController m dan h):
- (IBAction) saveGame: (id) pengirim {NSDictionary * savedGameDictionary = [activeGame toDictionary]; Kesalahan NSError *; NSData * jsonData = [NSJSONSerialization dataWithJSONObject: savedGameDictionary options: NSJSONWritingPrettyPrinted error: & error]; NSString * savedGameString = [[NSString alloc] initWithData: jsonData encoding: NSUTF8StringEncoding]; NSString * savedGamesFilePath = [NSHomeDirectory () stringByAppendingPathComponent: @TTGAMESESSIONSAVEDFILEPATH]; [savedGameString writeToFile: savedGamesFilePath atomically: YES encoding: NSUTF8StringEncoding error: NULL];}
Metode penting disini adalah metode dataWithJSONObject dari kelas NSJSONSerialization.
Anda dapat melihat operasi sebaliknya (yaitu dari string JSON ke NSDictionary) dalam metode restoreGame pada kontroler tampilan yang sama:
- (IBAction) restoreGame: (id) sender {NSLog (@ "Restoring permainan"); … NSError * restoreError = nil; NSMutableDictionary * savedDictionary = [NSJSONSerialization JSONObjectWithData: opsi [savedGameString dataUsingEncoding: NSUTF8StringEncoding]: NSJSONReadingMutableContainers error: & restoreError]; activeGame = [[TTTGame alloc] initFromDictionary: savedDictionary]; TTTGameGrid * gameGrid = [activeGame getGameGrid]; if (! [activeGame isActive]) [boardView disableInput]; [boardView setGrid: gameGrid]; [gameView redraw];}
Disini metode utamanya adalah JSONObjectWithData, yang melakukan operasi sebaliknya untuk menciptakan Objective-C NSDictionary dari data JSON.