Video: Hướng dẫn sao lưu mọi dữ liệu trên thiết bị iOS của bạn | Điện Thoại Vui 2025
Trong các ứng dụng iOS, các tệp được sử dụng làm phương tiện để lưu trữ và khôi phục trạng thái của một trò chơi đang hoạt động. Nếu bạn đã thực hiện bất kỳ chương trình bằng ngôn ngữ bất kỳ (C, C ++, Java, C #, bạn đặt tên nó), bạn đã sử dụng các tệp để đọc dữ liệu và ghi dữ liệu vào. Mục tiêu-C cho phép bạn làm việc với các tệp cũng như các tệp trong iOS được tổ chức thành thư mục.
Mỗi ứng dụng có thư mục riêng của nó nơi ứng dụng cư trú và dữ liệu của nó có thể được lưu trữ. Thư mục này được gọi là sandbox của ứng dụng.
Một ứng dụng bị cấm truy cập hoặc tạo các tệp bên ngoài vùng cát của nó. Khi một ứng dụng cần làm việc với các liên hệ hoặc âm nhạc của người dùng, hệ thống cần (và) cho phép hoạt động liên quan đến tập tin cần thiết để đọc hoặc sửa đổi các kho lưu trữ dữ liệu này, nằm ngoài hộp cát của ứng dụng.
Thư mục sandbox này được tổ chức trong một tập hợp các thư mục con. Apple xác định cách sử dụng từng thư mục con như sau:
-
Tên ứng dụng << >>. thư mục ứng dụng là nơi tệp thi hành của ứng dụng và tất cả các tệp trong bó của tệp tin đó cư trú (chẳng hạn như hình ảnh X và O cho Tic-Tac-Toe). Thư mục Documents chứa dữ liệu mà ứng dụng của bạn không thể tạo lại, chẳng hạn như tài liệu do người dùng tạo hoặc nội dung. Đây là thư mục nơi ứng dụng Tic-Tac-Toe lưu trò chơi, giữ các tệp SQLite của nó, v.v … iTunes sao lưu thư mục này, vì vậy khi bạn kết nối thiết bị với máy Mac, dữ liệu ở đây sẽ được lưu lại.
-
Thư mục Hộp thư đến trong thư mục Documents có ý nghĩa đặc biệt. Thư mục này lưu các tệp tin mà
khác -
ứng dụng yêu cầu ứng dụng của bạn mở. Ví dụ: chương trình Thư đặt các e-mail đính kèm liên quan đến ứng dụng của bạn trong thư mục này. Ứng dụng của bạn có thể đọc và xóa các tệp trong thư mục này nhưng không thể tạo các tệp mới hoặc ghi vào các tệp hiện có. Thư mục Thư viện được sử dụng cho các tệp không phải là tệp dữ liệu người dùng nhưng cần được sao lưu. Ngoại trừ thư mục con có tên Caches (được dành riêng cho dữ liệu mà ứng dụng tạm thời muốn tiết kiệm để truy cập nhanh hơn), các tệp tin ở đây được iTunes hỗ trợ. Thư mục con tmp lưu dữ liệu tạm thời mà không cần phải tồn tại giữa chạy ứng dụng. Ứng dụng của bạn nên xóa các tệp khỏi thư mục này khi chúng không cần nữa. Hệ thống cũng có thể tẩy các tệp tin kéo dài từ thư mục này khi ứng dụng của bạn không chạy hoặc dung lượng đĩa thấp. Nội dung của thư mục này là
-
không được sao lưu.
-
Bây giờ, hãy xem ví dụ nhanh về Tic-Tac-Toe cho thấy cách viết và đọc từ các tệp tin. Trong ví dụ này, sử dụng tệp để lưu và khôi phục trạng thái của trò chơi. Khi người dùng chạm vào Lưu Trò chơi, trạng thái hiện tại của trò chơi được lưu vào một tệp tên là SavedGames. dữ liệu trong thư mục Documents trong sandbox của ứng dụng (đường dẫn đến tập tin này đã được thiết lập bằng cách sử dụng #define như TTTGAMESESSIONSAVEDFILEPATH không đổi trong tập tin TTTGameSessionViewController h). Nếu người dùng thoát nếu không hoàn thành trò chơi, cô ấy có thể trở lại màn hình phiên trò chơi và trở lại trò chơi đã lưu bằng cách chọn Phục hồi Trò chơi.
Bây giờ đối với một số mã. Đoạn mã sau cho thấy saveGame:
- (IBAction) saveGame: (id) sender {NSDictionary * savedGameDictionary = [activeGame toDictionary]; Lỗi NSError *; NSData * jsonData = [NSJSONSerialization dataWithJSONObject: savedGameDictionary options: NSJSONWritingPrettySản xuất lỗi: & lỗi]; NSString * savedGameString = [[NSString alloc] initWithData: mã hóa jsonData: NSUTF8StringEncoding]; NSString * savedGamesFilePath = [NSHomeDirectory () chuỗiByAppendingPathComponent: @TTTGAMESESSIONSAVEDFILEPATH]; [savedGameString writeToFile: savedGamesFilePath atomically: mã hoá YES: NSUTF8StringEncoding error: NULL];}
Viết vào một tệp tin thật dễ dàng. Bạn chỉ cần xây dựng đường dẫn của tập tin bằng cách sử dụng phương pháp stringByAppendingPathComponent trên một đối tượng đại diện cho thư mục chính của ứng dụng (mà bạn nhận được bằng cách gọi hàm NSHomeDirectory). Sau đó [savedGameString writeToFile: savedGamesFilePath …] thực hiện các bài viết thực tế.
Việc đọc từ một tệp cũng rất đơn giản. Đây là mã cho restoreGame:
- (IBAction) restoreGame: (id) sender {NSString * savedGamesFilePath = [NSHomeDirectory () stringByAppendingPathComponent: @TTTGAMESESSIONSAVEDFILEPATH]; NSString * savedGameString = [NSString stringWithContentsOfFile: savedGamesFilePath mã hóa: NSUTF8StringEncoding lỗi: NULL]; NSError * restoreError = không; NSMutableDictionary * savedDictionary = [NSJSONSerialization JSONObjectWithData: [savedGameString dataUsingEncoding: NSUTF8StringEncoding] tùy chọn: NSJSONReadingMutableContainers lỗi: & restoreError]; activeGame = [[TTTGame alloc] initFromDictionary: savedDictionary]; TTTGameGrid * gameGrid = [activeGame getGameGrid]; nếu (! [activeGame isActive]) [boardView disableInput]; [boardView setGrid: gameGrid]; [gameView redraw];}
Bạn đã nhìn thấy đường dẫn đến tệp được tạo ra bằng cách sử dụng hàm NSHomeDirectory để lấy đối tượng thư mục chính và sau đó sử dụng phương thức này của phương thức stringByAppendingPathComponent để tạo chuỗi. Tiếp theo, bạn đọc toàn bộ tệp tin vào một chuỗi bằng cách sử dụng [NSString stringWithContentsOfFile: savedGamesFilePath …], và sau đó bạn có thể tự do xử lý chuỗi nếu cần.
