2014-09-11 13 views
10

Po wprowadzeniu ostatnich zmian w kodzie xcode 6 wygląda tak, że plik .app i folder dokumentu nie znajdują się już w tym samym folderze w katalogu symulatora iPhone'a.Xcode 6/iOS 8 Symulator danych i skryptu folderu zestawu

Wcześniej możemy uzyskać dostępu do pliku katalogów i .app na

/Users/me/Library/Application Support/iPhone Simulator/7.1/Applications/SomeCrpyticNumber 

ale w Xcode 6, katalog symulator jest zupełnie inna:

~/Library/Developer/CoreSimulator/Devices/CrypticNumber1/data/Containers/Bundle/CrypticNumber2/MyApp.app 

i

~/Library/Developer/CoreSimulator/Devices/CrypticNumber1/data/Containers/Data/CrypticNumber3/Documents  

gdzie CryptNumber 1,2 i 3 są różne. Czy istnieje sposób, w jaki mogę uzyskać odpowiedni folder dokumentów po znalezieniu folderu zawierającego plik .app? I "m kłopoty z tym.

dlaczego? ...

Gdybym zbudowany aplikację na iOS 7 na symulatorze, katalog dokumentów i plików .app są w tym samym folderze conajmniej jak poprzednio, ale iOS 8 oddziela je

jedynym rozwiązaniem można myślę, teraz jest parę się 2 foldery, które mają najnowsze daty utworzenia/modyfikacji

Edycja:..

na marginesie, to narzędzie jest bardzo przydatne przy znajdowaniu folderów symulatora xcode 6 teraz: http://simpholders.com/

+0

try [this] (http://nsrover.wordpress.com/2014/11/28/ios8-simulator-documents-directory/) – NSRover

Odpowiedz

10

To również mnie podrażniało. Nie udało mi się go rozwiązać w 100%, ale stworzyłem szybką i brudną aplikację, aby trochę pomóc. Zawsze mogę znaleźć katalog urządzeń, ale nie znalazłem jeszcze sposobu na niezawodne wyśledzenie katalogów pakietów/sandbox. Źródło: https://github.com/somegeekintn/SimDirs

Edytuj: Poszliśmy dalej i rozpoczęliśmy skanowanie pliku mobile_installation.log, aby znaleźć dodatkowe lokalizacje. Wszystko wydaje się teraz.

+0

To wygląda świetnie. Robię też coś podobnego do tego, co masz oprócz tego, że nie mam GUI :) W tej chwili użyję po prostu simulator_app = "$ (find" ~/Library/Developer/CoreSimulator/Devices "-name" $ project_name.app ")" \t full_path_to_app = "$ (dirname" $ ​​simulator_app ")", aby znaleźć katalog dla aplikacji, ale przypuszczam, że chcielibyśmy dopasować datę utworzenia tego folderu do innego folderu, aby znaleźć pakiet informator. – kevinl

+1

Możesz także chcieć wykorzenić się z katalogu data/Library/Logs/MobileInstallation/mobile_installation.log.0. Wygląda na to, że rejestruje informacje o instalacji i odinstalowaniu aplikacji. Musi to być bardziej trwały zapis tego gdzieś myślisz. –

+1

Używam skryptu, który pasuje do identyfikatora pakunku z plikiem w '.com.apple.mobile_container_manager.metadata.plist' - wydaje się być wystarczająco wiarygodny. –

1

Napotkałem ten sam problem, gdy zapisałem pełną ścieżkę za pomocą CoreData. Podczas pobierania pełnej ścieżki zwraca wartość null, ponieważ identyfikator UUID folderu dokumentu jest inny przy każdym ponownym uruchomieniu aplikacji. Poniżej znajduje się moja rozdzielczość:

  1. Upewnij się, że przechowujesz tylko względną ścieżkę dokumentu/pliku w CoreData. Na przykład. przechowuj "Files/image.jpg" zamiast "/Users/yourname/.../Applications/UUID/Document/Files/image.jpg".
  2. Użyj następujących czynności, aby odzyskać miejsce aplikacja dokumentu:

    [[[NSFileManager defaultManager] URLsForDirectory: NSDocumentDirectory inDomains: NSUserDomainMask] lastObject];

  3. Skonsoliduj zarówno # 2, jak i # 1, aby uzyskać pełną ścieżkę do dokumentu/pliku, który chcesz odzyskać.
Można odwołać się do Apple Developer Uwaga: https://developer.apple.com/library/ios/technotes/tn2406/_index.html

1

Istnieje wielka plugin dla Xcode, który pozwala, aby otworzyć katalog dla każdej aplikacji, którą chcesz. Nazywa się ZLGotoSandboxPlugin i można go zainstalować przez Alcatraz. Ta wtyczka dodaje specjalne podmenu do menu "Plik" Xcode (ukryłem tam kilka nazw aplikacji): The plugin menu.

Uważam, że jest to wygodne.

Powiązane problemy