Di mana iPhone Simulator menyimpan datanya?


234

Saya memiliki DB SQLite yang saya gunakan untuk menyimpan data aplikasi, dan saya bisa melakukan dengan melihat ke dalamnya untuk men-debug masalah yang saya alami - tetapi di mana iPhone Simulator menyimpan datanya, biasanya?

Jawaban:


291

Jawaban yang diterima benar untuk SDK 3.2 - SDK 4 menggantikan / folder Pengguna di jalur itu dengan nomor untuk masing-masing versi iPhone OS / iOS lama yang dapat disimulasikan, sehingga jalur menjadi:

~ / Perpustakaan / Dukungan Aplikasi / iPhone Simulator / [Versi OS] / Aplikasi / [appGUID] /

jika Anda memiliki SDK yang sebelumnya diinstal bersama, simulator 3.1.x akan terus menyimpan datanya di:

~ / Perpustakaan / Dukungan Aplikasi / iPhone Simulator / Pengguna / Aplikasi / [appGUID] /

Untuk Xcode6 dan iOS8

~ / Perpustakaan / Pengembang / CoreSimulator / Perangkat / [DeviceID] / data / Kontainer / Data / Aplikasi / [AppID] /


6
cd ~/Library/Application\ Support/iPhone\ Simulator/
Robert

174
Alih-alih mencari di finder yang GUID milik Anda, perhatikan jawaban pisca46 di bawah ini: Cukup ketik po NSHomeDirectory()debugger. Potong dan tempel ke Go> Go To Folder (Cmd-Shift-G).
mackworth

Saya sedikit khawatir bahwa ketika saya meluncurkan simulator dikatakan 8.2, tetapi ketika saya melihat di folder ini, satu-satunya nomor versi yang saya lihat adalah 7.1. Itu membuat saya khawatir bahwa saya mencari di tempat yang salah.
bugloaf


4
Sulit untuk menekankan betapa lebih sederhana, lebih mudah, lebih sedikit kesalahan dan kurang membuat frustrasi jawaban ini (seperti yang direkomendasikan dalam komentar mackworth di atas). Anda hanya dapat menambahkan baris ke NSLogini dalam Anda AppDelegate's didFinishLaunchingWithOptions:, atau Anda dapat po NSHomeDirectory()dari debugger. Dalam kedua kasus, salin string dan buka dengan finder Cmd+Shift+G. Ini berfungsi lebih baik karena Anda bertanya dengan perintah standar alih-alih perlu mengetahui sesuatu yang berubah.
Benjohn

93

Ada cara (lebih cepat?) Lain untuk menemukan di mana data aplikasi Anda tanpa Terminal:

  1. Luncurkan aplikasi di simulator
  2. Buka Monitor Aktivitas
  3. Temukan nama aplikasi Anda di tab CPU
  4. Klik dua kali dan buka "Open Files and Ports"

masukkan deskripsi gambar di sini


1
NSString *uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];memberi Anda pengenal perangkat
oabarca

@oabarca pengenal yang Anda dapatkan tidak ada hubungannya dengan deviceID atau appFolder simulator; Saya menggunakan Xcode 11.2.1 dan iOS 13.2.2
DawnSong

78

Menemukannya:

~/Library/Application Support/iPhone Simulator/User/

16
Cara mencari: Di Finder tekan CMD + SHIFT + G
rohan-patel

Silakan lihat tanggapan yang diperbarui di bawah ini oleh dsmudger, itu adalah jawaban yang benar saat ini.
Tom Susel

74

iOS 8 ~ / Library / Developer / CoreSimulator / Perangkat / [Device ID] / data / Aplikasi / [appGUID] / Documents /


1
Adakah cara untuk mendapatkan ID Perangkat?
msmq

2
@msmq cobaxcrun instruments -s
Shazron

11
@msmq Nyalakan simulator Anda saat ini, Perangkat Keras -> Perangkat -> Kelola Perangkat ... -> Pilih simulator Anda dalam daftar "SIMULATOR". Kemudian di sebelah kanan adalah "Identifier". Ini adalah Device ID.
RichX

Bagaimana menemukan [appGUID] di sini?
Yang You

66

Pada Singa Users/[username]/Libraryitu tersembunyi.

Untuk hanya melihat di Finder, klik menu 'Go' di bagian atas layar dan tahan tombol 'alt' untuk menampilkan 'Library'.

Klik 'Perpustakaan' dan Anda dapat melihat folder perpustakaan yang sebelumnya tersembunyi.

Sebelumnya disarankan:

Menggunakan

chflags nohidden /users/[username]/library

di terminal untuk menampilkan folder.


1
kemudian setelah itu Anda dapat menemukannya di: ~ / Perpustakaan / Dukungan Aplikasi / iPhone Simulator / [Versi OS] / Aplikasi / [appGUID] /
Rafael Moreira

Itu saran yang menarik bagi pengguna normal, tetapi bagi saya pengembang iOS / OS X perlu mengakses perpustakaan secara teratur sehingga tidak ingin disembunyikan lagi. (Kemudian lagi, saya kira banyak pengembang menggunakan Terminal bukan Finder?)
ArtOfWarfare

58

Cara termudah yang pernah ada.

  1. Tangkap Breakpoint di suatu tempat.

  2. Masuk po NSHomeDirectory()ke jendela konsol

Hasil:

(lldb) po NSHomeDirectory () / Pengguna / usernam / Perpustakaan / Pengembang / CoreSimulator / Perangkat / 4734F8C7-B90F-4566-8E89-5060505E387F / data / Wadah / Data / Aplikasi / 395818BB-6D0F-499F-AAFE-068A783


1
Kalau saja aku tahu ini sebelumnya. Ini seharusnya jawaban yang benar
Ivan Cantarino

Saya pikir semua jawaban lain juga benar. Tetapi ini tampaknya mudah bagi saya: -]
Lal Krishna

37

Jika Simulator sedang berjalan, Anda bisa mendapatkan jalur ke wadah aplikasi apa pun:

xcrun simctl get_app_container booted <app bundle identifier>

Contoh output:

$ xcrun simctl get_app_container booted com.example.app
/Users/jappleseed/Library/Developer/CoreSimulator/Devices/7FB6CB8F-63CB-4F27-BDAB-884814DA6FE0/data/Containers/Bundle/Application/466AE987-76BC-47CF-A207-266E65E7DE0A/example.app

"booted" dapat digantikan dengan sebagian besar simctlperintah di mana saja perangkat UDID diharapkan.

Anda dapat melihat daftar perangkat dengan xcrun simctl listdan mendapatkan bantuan tentang perintah khusus xcrun simctl help.

Pembaruan : Dengan permintaan populer di Xcode 8.3 Anda sekarang dapat menentukan jenis wadah yang Anda inginkan dengan menambahkan "aplikasi", "data", "grup", atau pengidentifikasi grup aplikasi.

Untuk mendapatkan wadah data:

$ xcrun simctl get_app_container booted com.example.app data

sangat bagus. Tidak perlu menjalankan perintah untuk mendapatkan device_id dan appId. Satu langkah untuk mendapatkan semua
iamhite

Yang ini harus diterima, karena itu cara "paling stabil" untuk melakukan hal-hal seperti itu.
Olha

35

Dengan Xcode 5 Anda dapat menggunakan kode di bawah ini:

#import <Foundation/NSFileManager.h>

dan:

NSString *homeDir = NSHomeDirectory();
NSLog(@"%@",homeDir);

Hasilnya mungkin terlihat seperti:

"/Users/<your user name>/Library/Application Support/iPhone Simulator/7.1/Applications/hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh"

Di mana hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhhbeberapa string hex mengidentifikasi aplikasi iOS Anda.


16
Ini juga berfungsi di debugger: po NSHomeDirectory()
mackworth

30

Sepertinya Xcode 6.0 telah memindahkan lokasi ini sekali lagi, setidaknya untuk simulator iOS 8.

~ / Perpustakaan / Pengembang / CoreSimulator / Perangkat / [DeviceID] / data / Kontainer / Data / Aplikasi / [AppID]


4
di ~ / Library / Developer / CoreSimulator / Devices / [DeviceID] / ada juga file .plist bernama "device.plist" jika Anda melihat ke dalam, Anda dapat mengetahui nama perangkat seperti iphone-6 atau iphone-5s. deviceID sangat membingungkan jadi saya pikir Anda harus melihat ke dalam file .plist.
EFE

1
Bagaimana cara mendapatkan AppID?
Nama Tampilan

1
Saya menipu untuk menemukan id aplikasi, dengan menggunakan 'ls-l' dan mencari tahu file aplikasi mana yang paling baru dibuat. Mungkin bekerja untuk orang lain juga.
Maya Webster

1
Atau dalam sortir pencari berdasarkan "tanggal dibuat" untuk mendapatkan Aplikasi di bagian atas daftar.
Ammar Mujeeb

30

Salah satu cara paling mudah untuk menemukan di mana aplikasi berada dalam simulator. Pengguna "NST temporaryDirectory ()"

Langkah-

  1. Terapkan breakpoint di mana saja di dalam aplikasi dan jalankan aplikasi.
  2. Saat aplikasi berhenti di breakpoint, ketikkan perintah berikut di konsol Xcode.

    po NST temporaryDirectory ()

Lihat gambar di bawah ini untuk wawasan yang tepatmasukkan deskripsi gambar di sini

Sekarang Anda memiliki jalur yang tepat hingga folder sementara. Anda dapat kembali dan melihat semua folder terkait aplikasi.

Semoga ini juga membantu. Selamat Coding :)


1
Tip keren, tapi kenapa tidak po NSHomeDirectory()?
Kode Roadie

9

Di mana Xcode menyimpan simulator di 2019+ Catalina, Xcode 11.0

Runtime

$ open /Library/Developer/CoreSimulator/Profiles/Runtimes

Sebagai contoh: iOS 13.0, watchOS 6.0ini mengambil ruang yang paling, jauh. Masing-masing bisa hingga ~ 5GB

Perangkat

$ open ~/Library/Developer/CoreSimulator/Devices

Sebagai contoh: iPhone Xr, iPhone 11 Pro Max. Ini biasanya masing-masing <15 mb.

Penjelasan

Simulator dibagi antara runtime dan perangkat. Jika Anda menjalankan, $ xcrun simctl listAnda dapat melihat gambaran umum, tetapi jika Anda ingin menemukan lokasi fisik dari simulator ini, lihat di direktori ini yang saya tunjukkan.

Benar-benar aman untuk menghapus runtime yang tidak Anda dukung. Anda dapat menginstalnya kembali nanti jika diinginkan.


8

Cukup lakukan ini:

NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
NSLog(@"%@", docDirPath);

Dan Anda akan mendapatkan sesuatu seperti ini:

/ Pengguna / admin / Perpustakaan / Pengembang / CoreSimulator / Perangkat / 58B5B431-D2BB-46F1-AFF3-DFC789D189E8 / data / Wadah / Data / Aplikasi / 6F3B985F-351E-468F-9CFD-BCBE217A25FB / Dokumen

Pergi ke sana dan Anda akan melihat folder dokumen aplikasi Anda terlepas dari versi XCode. (Gunakan perintah "Pergi ke Folder ..." di Finder dan tentukan path "~ / library").

Versi cepat untuk jalur string:

let docDirPath =
NSSearchPathForDirectoriesInDomains(.documentDirectory,
                                    .userDomainMask, true).first
print(docDirPath)

dan URL folder:

let docDirUrl =
    FileManager.default.urls(for: .documentDirectory,
                             in: .userDomainMask).first
print(docDirUrl)

Akan memposting jawaban yang hampir sama. Metode ini memiliki keuntungan untuk selalu memberikan jalur yang benar, pada setiap versi simulator iOS. Omong-omong, Anda juga dapat menyalin nilai variabel url di debugger, jika Anda tidak ingin mencatatnya;)
Moose

7

Di iOS 5:

/ Pengguna / [Nama Pengguna] / Perpustakaan / Dukungan Aplikasi / iPhone Simulator / 5.0 / Aplikasi / [AppGUID] /


6

Untuk Xcode 4.6 disimpan di jalur berikut ...

/ Pengguna / [pengguna saat ini] / Perpustakaan / Dukungan Aplikasi / iPhone Simulator / 6.1 / Aplikasi /

Untuk mengetahuinya secara terprogram gunakan kode berikut

  NSLog(@"path:%@",[[NSBundle mainBundle]bundlePath]);

2
Swift :print("path: \(NSBundle.mainBundle().bundlePath)")
SwiftArchitect

4

Untuk iOS 8

Untuk menemukan folder Dokumen , Anda dapat menulis file di folder Dokumen:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"Words.txt"];
NSString *content = @"Apple";
[content writeToFile:fileName atomically:NO encoding:NSStringEncodingConversionAllowLossy error:nil];

katakan, di didFinishLaunchingWithOptions .

Kemudian Anda dapat membuka Terminal dan menemukan folder:

$ find ~/Library -name Words.txt


2

Untuk macOS Catalina, saya menemukan db saya di:

~/Library/Developer/CoreSimulator/Devices/{deviceId}/data/Containers/Data/Application/{applicationId}/Documents/my.db

Untuk mendapatkan applicationId, saya hanya mengurutkan folder berdasarkan tanggal yang dimodifikasi, meskipun saya yakin ada cara yang lebih baik untuk melakukannya.


1

Untuk pengguna yang bereaksi asli yang tidak sering menggunakan Xcode, Anda bisa menggunakannya find. Buka terminal dan cari dengan nama database.

$ find ~/Library/Developer -name 'myname.db'

Jika Anda tidak tahu nama persisnya, Anda dapat menggunakan wildcard:

$ find ~/Library/Developer -name 'myname.*'


0

Anda dapat mencoba menggunakan kode di bawah ini

NSString *fileName = @"Demo.pdf";
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *pdfFileName = [documentsDirectory stringByAppendingPathComponent:fileName];
    NSLog(@"File path%@",pdfFileName);

0

Untuk membuka dikte di mana Anda App adalah yang Anda bangun di xCode pada simulator, lakukan hal berikut:

  1. buka windor Finder (ikon wajah tersenyum)
  2. lalu klik GO -> Go to Folder
  3. ketik: ~ / Perpustakaan / Dukungan Aplikasi / iPhone Simulator
  4. Direktori adalah versi iOS dari berbagai Simulator
  5. Sub Direktori adalah Aplikasi yang dipasang di simulator
  6. Folder Dokumen adalah tempat pengguna membuat konten yang membuat cadangan ke iCloud

0

Saya tidak memiliki afiliasi dengan program ini, tetapi jika Anda ingin membuka semua ini di finder, SimPholder membuatnya sangat mudah.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.