Mam naprawdę dziwny problem z aplikacją na iPada, którą piszę. Podczas uruchamiania chcę skopiować folder zawierający kilka innych folderów (które są puste) z pakietu aplikacji do katalogu Documents. Folder do skopiowania, zwany "flds" (wszystkie małe litery), został dodany do projektu Xcode 4 za pomocą opcji "Utwórz odniesienia do folderów dla wszystkich dodanych folderów", a ja sprawdziłem, czy jest to faktycznie część pliku .app po kompilacji. (I to, że nie istnieją już podczas próby skopiowania.)Nie znaleziono folderu NSBundle na urządzeniu, ale działa w symulatorze
Próbowałem się do folderu „flds” za pomocą jednej z tych połączeń (wszystkie działają):
[[[NSBundle mainBundle] bundleURL] URLByAppendingPathComponent:@"flds"]
[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"flds"]
[[NSBundle mainBundle] pathForResource:@"flds" ofType:@""]
Następnie kopiowanie za pomocą metody NSFileManager copyItemAtPath:toPath:error:
(lub równoważnika adresu URL przy użyciu adresu URL zamiast łańcucha ścieżki).
Wszystkie te strategie działają doskonale w Symulatorze iPada i na urządzeniu iPad, z następującym wyjątkiem: Kiedy (pomyślnie) buduję dla dystrybucji Ad Hoc, przeciągnij plik .app i .mobileprovision do iTunes, zsynchronizuj, a następnie uruchom aplikację na urządzeniu, system nie myśli już, że istnieje folder "flds"! Próbowałem to sprawdzić przez wiele godzin, bez powodzenia. Ponownie, jestem całkowicie pewien, że działa zarówno w symulatorze, jak i na urządzeniu działającym z Xcode, ale nie po zsynchronizowaniu przez iTunes.
Pomysły?
odkryłem, że następujące wywołanie pobiera ścieżkę do folderu z powodzeniem również po synchronizacji aplikacji na iPada za pośrednictwem iTunes:
[[NSBundle mainBundle] pathForResource:@"flds" ofType:nil inDirectory:nil]
Jednak, kiedy skorzystać z tej ścieżki, aby skopiować folder do nowej lokalizacji w folderze Documents , tylko sam folder i plik .txt (który umieściłem tam jako test, tak naprawdę nie powinno tam być) zostaje skopiowany, a nie puste podfoldery 6-7. Znowu ten sam schemat pokazuje się: Działa zgodnie z oczekiwaniami zarówno na symulatorze, jak i na urządzeniu uruchomionym z Xcode (folder 'flds' z 'test.txt' i puste podfoldery są kopiowane pomyślnie), ale nie po zsynchronizowaniu przez iTunes (tylko folder 'flds' z "test.txt" są kopiowane, a nie podfoldery). Czy to naprawdę zamierzone zachowanie copyItemAtPath:toPath:error:
? Dlaczego miałaby zachowywać się inaczej po synchronizacji z iTunes?
Nie jestem pewien, czy próbowałeś tego, ale czy sprawdziłeś, czy folder flds istnieje w ostatecznej wersji (pakiet .app, który przeciągnąłeś do iTunes), klikając prawym przyciskiem myszy aplikację i wybierając Pokaż pakiet Zawartość? Powinieneś być w stanie zlokalizować pliki i foldery, do których próbujesz się tam dostać poprzez wyszukiwarkę. – Mark
Próbowałem tego. Folder zdecydowanie tam jest. Próbowałem również umieścić plik .txt w jednym z podfolderów "flds" i uzyskać do niego dostęp za pośrednictwem pathForResource: ofType :, a to faktycznie działa. Pobieranie samego folderu nie jest możliwe. – hsdev
Sprawdź, czy używasz pliku, którego nie ma na samym urządzeniu. Być może próbowałeś użyć pliku, który jest zapisany na twoim komputerze. Jeśli nie masz pewności, spróbuj otworzyć projekt z innego komputera i sprawdź, czy działa. – Sagiftw