Tôi có một ứng dụng iPhone trong đó một số đối tượng miền được điền bằng dữ liệu do người dùng nhập. Để khôi phục trạng thái sau khi bị gián đoạn, các đối tượng này thực hiện giao thức NSCoding và được ghi vào đĩa (thư mục Documents) trong thông báo applicationWillTerminate. Sau đó, khi ứng dụng được khởi chạy lại, các byte dữ liệu được tải lên và các đối tượng miền được repopulated. Mã để lấy thư mục tài liệu như sau:Làm cách nào để khắc phục lỗi Cocoa 513?
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
Điều này làm việc tuyệt vời trong trình mô phỏng nhưng khi tôi triển khai ứng dụng cho iPhone, nó ngừng hoạt động. Lý do tại sao mã lỗi iPhone 513 - có nghĩa là "quyền bị từ chối". Có một lưu ý trong tài liệu dev iPhone mà giải thích thêm một chút -
Trên thiết bị, con đường trở (documentsDirectory) cũng tương tự như sau: /var/mobile/Applications/30B51836- D2DD-43AA-BCB4-9D4DADFED6A2/Documents
Tuy nhiên, trên Simulator, các con đường quay trở lại lấy hình thức sau đây:
/Volumes/Stuff/Users/johndoe/Library/Application Support /iPhone Simulator/User/Applications/118086A0-FAAF-4CD4-9A0F-CD5E8D287270/Documents
Đây là hành vi chính xác mà tôi nhìn thấy. Tôi không thực sự chắc chắn làm thế nào điều này liên quan đến việc nhận được một sự cho phép bị từ chối lỗi và những gì tôi có thể làm để sửa chữa nó. Nó nói dưới đây -
Để đọc và viết sở thích người dùng, sử dụng lớp NSUserDefaults hoặc CFPreferences API. Các giao diện này loại bỏ nhu cầu để bạn tạo đường dẫn đến thư mục Thư viện/Tuỳ chọn/và các tệp tùy chọn đọc và ghi trực tiếp. Để biết thêm thông tin về sử dụng các giao diện, xem “Thêm Bundle Cài đặt.”
Nếu ứng dụng của bạn có chứa âm thanh, hình ảnh, hoặc các nguồn lực khác trong gói ứng dụng, bạn nên sử dụng NSBundle lớp hoặc CFBundle đục nhập để tải các tài nguyên đó. Các gói có kiến thức vốn có về nơi tài nguyên sống bên trong ứng dụng. Ngoài ra, các gói nhận thức được các tùy chọn ngôn ngữ của người dùng và là có thể tự động chọn tài nguyên được bản địa hóa trên tài nguyên mặc định. Để biết thêm thông tin về bó, xem “Ứng dụng Bundle.”
tôi không thấy làm thế nào tôi có thể sử dụng các gói ứng dụng để tải byte dữ liệu mặc dù. Bất kỳ trợ giúp hoặc ví dụ?
Tôi nghĩ sự khác biệt là dấu gạch chéo ở cuối "Tài liệu". –