Mam aplikację na iPhone'a, w której wiele obiektów domeny jest wypełnionych danymi wprowadzonymi przez użytkownika. Aby przywrócić stan po przerwaniu, obiekty te implementują protokół NSCoding i są zapisywane na dysku (katalogu Documents) w komunikacie applicationWillTerminate. Następnie, gdy aplikacja zostanie uruchomiona ponownie, bajty danych zostaną załadowane, a obiekty domeny zostaną ponownie wypełnione. Kod dostać katalog dokumentów jest następująca:Jak naprawić błąd Cocoa 513?
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
To działało świetnie w symulatorze, ale kiedyś wdrożył aplikację na iPhone przestał działać. Powodem jest kod błędu iPhone 513 - co najwyraźniej oznacza "odmowa zgody". Jest uwaga w Dokumentach iPhone Dev które wyjaśniają nieco więcej -
Na urządzeniu zwrócony ścieżka (documentsDirectory) jest podobna do następujący: /var/mobile/Applications/30B51836- D2DD-43AA-BCB4-9D4DADFED6A2/Dokumenty
jednak na Simulator zwrócony ścieżka przyjmuje następującą postać:
/Volumes/Stuff/Users/johndoe/Library/Application Support/iPhone Simulator/user/Applications/118086A0-FAAF-4CD4-9A0F-CD5E8D287270/Dokumenty
To jest dokładnie zachowanie, które widzę. Nie jestem do końca pewien, jak to się ma do otrzymania błędu odmowy uprawnień i co mogę zrobić, aby to naprawić. To nie znaczy poniżej -
do odczytu i zapisu preferencji użytkownika, użyć klasy NSUserDefaults lub CFPreferences API. Interfejsy te eliminują potrzebę utworzenia bezpośrednio ścieżki do katalogu Library/Preferences/oraz do odczytu i zapisu plików preferencji . Aby uzyskać więcej informacji na temat za pomocą tych interfejsów, patrz „Dodawanie wiązki Ustawienia”.
Jeśli aplikacja zawiera dźwięk, wizerunek lub inne zasoby w wiązce aplikacji, należy użyć klasy NSBundle lub CFBundle nieprzezroczysty wpisz , aby załadować te zasoby. Pakiety mają nieodłączną wiedzę na temat tego, gdzie w aplikacji znajdują się zasoby . Ponadto pakiety mają informacje o preferencjach językowych użytkownika i mogą zlokalizować zasoby domyślne automatycznie. Więcej informacji o pakietach, zobacz „Zastosowanie pakietu.”
nie widzę w jaki sposób mogę korzystać z aplikacji, aby załadować Bundle bajtów danych chociaż. Każda pomoc lub przykłady?
Myślę, że różnica polega na ukośniku na końcu "Dokumentów". –