Di Xcode 6, saya memiliki aplikasi yang saya gunakan di Core Data, tetapi tidak ada folder di Dukungan Aplikasi untuk iOS 8 iPhone Simulator. Di mana file dan basis data Data Inti sqlite saya disimpan?
Coba ini . Ada aplikasi yang langsung membuka direktori Documents dari menjalankan aplikasi terbaru.
NSRover
Saya menambahkan jawaban (di bagian bawah dari jawaban lain) yang menunjukkan bagaimana secara terprogram mendapatkan path tempat file Core Data berada.
ini benar secara umum tetapi tampaknya ada lebih banyak perubahan folder internal. Ini adalah jalur yang berfungsi untuk saya di Xcode Beta 3:~/Library/Developer/CoreSimulator/Devices/B2C6629C-998D-4E84-9ADB-06CAF5BA4B89/data/Containers/Data/Application/62593001-FADA-4647-AA80-FE9973956C05/Documents/
harryhorn
1
Apakah ada cara untuk memahami bahwa angka atau kekuatan kasar adalah satu-satunya kesempatan untuk mendapatkan data?
vir us
89
NSLog (@ "dir aplikasi:% @", [[[NSFileManager defaultManager] URLsForDirectory: NSDocumentDirectory inDomains: NSUserDomainMask] lastObject]); - akan mencetak path lengkap ke folder data
vir us
2
Saya membutuhkan jalan pintas terus-menerus ke direktori dokumen aplikasi saya, untuk debugging cepat. Setelah aplikasi didFinishLaunchingWithOptions. #if DEBUG NSString *appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]; NSString *aliasPath = [NSString stringWithFormat:@"XCodePaths/%@", appName]; remove([aliasPath UTF8String]); [[NSFileManager defaultManager]createSymbolicLinkAtPath:aliasPath withDestinationPath:DOCS_DIR error:nil]; #endif Sekarang saya punya simlink yang berfungsi, meskipun iOS8 + XCode6 mengubah GUID Data App saya setiap kali saya membangun.
seabass
32
The xcrun simctl listperintah dapat digunakan untuk melihat kesesuaian antara nama-nama simulator dan perangkat UDID. Atau lebih khusus lagi xcrun simctl list devicesperintahnya.
ThomasW
36
Saya menyarankan agar Anda menggunakan SimPholder untuk menemukan file Simulator Anda. Ini adalah item menu bar yang melacak aplikasi simulator Anda dan memungkinkan Anda untuk langsung pergi ke folder dan konten mereka. Itu mengagumkan.
Saya juga mengalami masalah dengan SimPholder2 di Yosemite, jadi saya memulai skrip baris perintah untuk membantu Anda menemukan dan membuka jendela Finder ke simulator dan Aplikasi yang Anda inginkan. Ia masuk ke folder dan daftar metadata untuk mendaftar semua folder simulator dan aplikasi. Jika tertarik, lihat di sini
Rodrigo Lima
SimPholder2 bekerja di Yosemite tetapi agak lambat; setelah Anda mengklik ikon di bilah status, tunggu saja beberapa detik dan itu akan muncul.
Jason
Whoa itu karya yang luar biasa dan terbaru dengan Yosemite + Xcode 6.3!
TruMan1
21
Saya menemukan SimulatorManager aplikasi sangat berguna. Ini akan membawa Anda langsung ke folder aplikasi dari simulator yang diinstal. Saya telah mencoba dengan simulator 7.1, 8.0 dan 8.1.
SimulatorManager berada sebagai ikon di baki sistem dan menyediakan opsi untuk "Luncurkan Saat Masuk".
Catatan : Ini hanya berfungsi dengan Xcode 6 (6.1.1 dalam kasus saya) dan di atasnya.
Amar, bagaimana Anda menginstal SimulatorManager? Saya pikir itu adalah plugin untuk Xcode tetapi ini adalah proyek Xcode
malena
1
di bilah atas pilih: Produk -> Arsip -> dan kemudian Ekspor Arsip sebagai Aplikasi Mac tanpa penandatanganan kembali (opsi terakhir) Anda akan mendapatkan file .app yang dapat Anda masukkan ke dalam folder Aplikasi Anda seperti aplikasi normal. ..
Heckscheibe
11
Untuk mengetahui di mana file .sqlite Anda disimpan di AppDelegate.m Anda, tambahkan kode berikut
Saya bergulat dengan ini selama beberapa waktu. Menjadi sakit besar untuk hanya sampai ke db sqlite lokal saya. Saya menulis skrip ini dan menjadikannya cuplikan kode di dalam XCode. Saya menempatkannya di dalam appDidFinishLaunching saya di dalam appDelegate saya.
//xcode 6 moves the documents dir every time. haven't found out why yet. #if DEBUG NSLog(@"caching documents dir for xcode 6. %@",[NSBundle mainBundle]);NSString*toFile =@"XCodePaths/lastBuild.txt";NSError*err =nil;[DOCS_DIR writeToFile:toFile atomically:YES encoding:NSUTF8StringEncoding error:&err];if(err)NSLog(@"%@",[err localizedDescription]);NSString*appName =[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"];NSString*aliasPath =[NSString stringWithFormat:@"XCodePaths/%@", appName];remove([aliasPath UTF8String]);[[NSFileManager defaultManager] createSymbolicLinkAtPath:aliasPath withDestinationPath:DOCS_DIR error:nil];#endif
Ini menciptakan simlink di root drive Anda. (Anda mungkin harus membuat folder ini sendiri pertama kali, dan chmod, atau Anda dapat mengubah lokasi ke tempat lain) Kemudian saya menginstal plugin xcodeway https://github.com/onmyway133/XcodeWay
Saya memodifikasinya sedikit sehingga akan memungkinkan saya untuk cukup menekan cmd + d dan itu akan membuka penggulung finder ke direktori Dokumen persisten aplikasi saya saat ini. Dengan cara ini, tidak peduli berapa kali XCode mengubah jalur Anda, itu hanya berubah saat dijalankan, dan pembaruan simlink Anda segera di setiap proses.
Simulator menempatkan file di ~ / Library / Developer / CoreSimulator / Devices / ... tetapi path setelah / Devices berbeda untuk semua orang.
Gunakan metode praktis ini. Ini mengembalikan jalur direktori sementara untuk pengguna saat ini dan tidak mengambil argumen.
NSString*NSTemporaryDirectory(void);
Jadi di kelas ViewController saya, saya biasanya meletakkan baris ini di viewDidLoad saya hanya untuk referensi ketika saya perlu mengambil file yang disimpan CoreData saya. Semoga ini membantu.
NSLog(@"FILE PATH :%@",NSTemporaryDirectory());
(Catatan: untuk pergi ke jalur, dari menu finder klik Go dan ketik ~ / Library untuk membuka direktori tersembunyi kemudian di Jendela Finder Anda dapat mengklik jalur yang ditampilkan di konsol Anda.)
Lokasi ini telah, sekali lagi, berubah, jika menggunakan Swift, gunakan ini untuk mencari tahu di mana folder itu (ini disalin dari file AppDelegate.swift yang dibuat Apple untuk Anda jadi jika itu tidak bekerja pada mesin Anda, cari di file itu untuk sintaksis yang tepat, ini bekerja pada saya menggunakan Xcode 6.1 dan iOS 8 simulator):
let urls =NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains:.UserDomainMask)
println("Possible sqlite file: \(urls)")
Di sini, mereka terdaftar sebagai direktori dengan nama UUID. Gunakan urutkan berdasarkan 'Tanggal dimodifikasi' untuk menemukan yang terbaru. Navigasi di dalam ke:
/data/Containers/Data/Application/
Di sini Anda akan mendapatkan daftar semua aplikasi pada perangkat itu. Anda dapat kembali menyortir ini untuk mendapatkan aplikasi terbaru.
CATATAN: Xcode mengubah nama direktori setiap kali Anda menjalankan aplikasi, jadi jangan mengandalkan membuat alias / pintasan di desktop.
Cara termudah adalah menggunakan aplikasi di sini , yang melakukan semuanya secara otomatis.
Di Swift 4 atau Swift 5 Anda dapat menggunakan NSHomeDirectory().
Cara termudah di Xcode 10 (atau Xcode 11) adalah untuk menjeda aplikasi Anda (seperti ketika itu mencapai breakpoint) dan menjalankan baris ini di konsol debugger:
po NSHomeDirectory()
po singkatan dari objek cetak dan mencetak banyak hal
Dengan Swift 4, Anda dapat menggunakan kode di bawah ini untuk mendapatkan direktori home aplikasi Anda. Direktori dokumen aplikasi Anda ada di sana.
print(NSHomeDirectory())
Saya pikir Anda sudah tahu bahwa direktori home aplikasi Anda dapat diubah, jadi jika Anda tidak ingin menambahkan kode tambahan ke basis kode Anda, SimPholder adalah alat yang bagus untuk Anda.
Dan lebih jauh lagi, Anda mungkin bertanya-tanya apakah ada alat, yang dapat membantu Anda menghemat waktu dari penutupan dan pembukaan kembali database SQLite yang sama setiap kali setelah direktori home aplikasi Anda diubah. Dan jawabannya adalah ya, alat yang saya tahu adalah SQLiteFlow . Dari dokumen itu, dikatakan bahwa:
Menangani perubahan nama file database atau direktori. Ini membuat SQLiteFlow dapat bekerja dengan baik dengan database SQLite Anda di simulator iOS.
Inilah sh untuk simulator dan aplikasi yang terakhir digunakan. Jalankan saja sh dan salin teks cetak dan tempel dan jalankan perintah untuk show in finder.
#!/bin/zsh
lastUsedSimulatorAndApplication=`ls -td -- ~/Library/Developer/CoreSimulator/Devices/*/data/Containers/Data/Application/*/ | head -n1`
echo $lastUsedSimulatorAndApplication
Jawaban:
Direktori simulator telah dipindahkan dengan Xcode 6 beta ke ...
Menjelajahi direktori ke folder Dokumen aplikasi Anda sedikit lebih sulit, misalnya,
sumber
~/Library/Developer/CoreSimulator/Devices/B2C6629C-998D-4E84-9ADB-06CAF5BA4B89/data/Containers/Data/Application/62593001-FADA-4647-AA80-FE9973956C05/Documents/
#if DEBUG NSString *appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]; NSString *aliasPath = [NSString stringWithFormat:@"XCodePaths/%@", appName]; remove([aliasPath UTF8String]); [[NSFileManager defaultManager]createSymbolicLinkAtPath:aliasPath withDestinationPath:DOCS_DIR error:nil]; #endif
Sekarang saya punya simlink yang berfungsi, meskipun iOS8 + XCode6 mengubah GUID Data App saya setiap kali saya membangun.xcrun simctl list
perintah dapat digunakan untuk melihat kesesuaian antara nama-nama simulator dan perangkat UDID. Atau lebih khusus lagixcrun simctl list devices
perintahnya.Saya menyarankan agar Anda menggunakan SimPholder untuk menemukan file Simulator Anda. Ini adalah item menu bar yang melacak aplikasi simulator Anda dan memungkinkan Anda untuk langsung pergi ke folder dan konten mereka. Itu mengagumkan.
sumber
Saya menemukan SimulatorManager aplikasi sangat berguna. Ini akan membawa Anda langsung ke folder aplikasi dari simulator yang diinstal. Saya telah mencoba dengan simulator 7.1, 8.0 dan 8.1.
SimulatorManager berada sebagai ikon di baki sistem dan menyediakan opsi untuk "Luncurkan Saat Masuk".
Catatan : Ini hanya berfungsi dengan Xcode 6 (6.1.1 dalam kasus saya) dan di atasnya.
Semoga itu bisa membantu!
sumber
Untuk mengetahui di mana file .sqlite Anda disimpan di AppDelegate.m Anda, tambahkan kode berikut
sekarang panggil metode ini di AppDelegate.m
sumber
Ini berhasil bagi saya dengan cepat:
sumber
Saya bergulat dengan ini selama beberapa waktu. Menjadi sakit besar untuk hanya sampai ke db sqlite lokal saya. Saya menulis skrip ini dan menjadikannya cuplikan kode di dalam XCode. Saya menempatkannya di dalam appDidFinishLaunching saya di dalam appDelegate saya.
Ini menciptakan simlink di root drive Anda. (Anda mungkin harus membuat folder ini sendiri pertama kali, dan chmod, atau Anda dapat mengubah lokasi ke tempat lain) Kemudian saya menginstal plugin xcodeway https://github.com/onmyway133/XcodeWay
Saya memodifikasinya sedikit sehingga akan memungkinkan saya untuk cukup menekan cmd + d dan itu akan membuka penggulung finder ke direktori Dokumen persisten aplikasi saya saat ini. Dengan cara ini, tidak peduli berapa kali XCode mengubah jalur Anda, itu hanya berubah saat dijalankan, dan pembaruan simlink Anda segera di setiap proses.
Saya harap ini bermanfaat bagi orang lain!
sumber
Buka pencari> Perpustakaan> Pengembang> CoreSimulator> Perangkat
Kemudian Ubah ikon Pengaturan dari finder pilih Date Added
Pilih aplikasi Anda> data> Wadah> data> Aplikasi>
pilih aplikasi Anda> Dokumen> Ini adalah file db Anda
Dalam kasus saya:
Kalau tidak, lakukan ini:
- Ini akan mencetak path lengkap ke folder data.
Cepat:
sumber
let dirPaths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) print("App Path: \(dirPaths)")
Gunakan Finder -> buka folder dan masukkan basepath yang diberikan untuk mencapai folder aplikasi
sumber
Simulator menempatkan file di ~ / Library / Developer / CoreSimulator / Devices / ... tetapi path setelah / Devices berbeda untuk semua orang.
Gunakan metode praktis ini. Ini mengembalikan jalur direktori sementara untuk pengguna saat ini dan tidak mengambil argumen.
Jadi di kelas ViewController saya, saya biasanya meletakkan baris ini di viewDidLoad saya hanya untuk referensi ketika saya perlu mengambil file yang disimpan CoreData saya. Semoga ini membantu.
(Catatan: untuk pergi ke jalur, dari menu finder klik Go dan ketik ~ / Library untuk membuka direktori tersembunyi kemudian di Jendela Finder Anda dapat mengklik jalur yang ditampilkan di konsol Anda.)
sumber
Lokasi ini telah, sekali lagi, berubah, jika menggunakan Swift, gunakan ini untuk mencari tahu di mana folder itu (ini disalin dari file AppDelegate.swift yang dibuat Apple untuk Anda jadi jika itu tidak bekerja pada mesin Anda, cari di file itu untuk sintaksis yang tepat, ini bekerja pada saya menggunakan Xcode 6.1 dan iOS 8 simulator):
sumber
Simulator terletak di bawah:
~/Library/Developer/CoreSimulator/
Di sini, mereka terdaftar sebagai direktori dengan nama UUID. Gunakan urutkan berdasarkan 'Tanggal dimodifikasi' untuk menemukan yang terbaru. Navigasi di dalam ke:
/data/Containers/Data/Application/
Di sini Anda akan mendapatkan daftar semua aplikasi pada perangkat itu. Anda dapat kembali menyortir ini untuk mendapatkan aplikasi terbaru.
CATATAN: Xcode mengubah nama direktori setiap kali Anda menjalankan aplikasi, jadi jangan mengandalkan membuat alias / pintasan di desktop.
Cara termudah adalah menggunakan aplikasi di sini , yang melakukan semuanya secara otomatis.
sumber
Saya membuat skrip ini yang akan meng-zip aplikasi terbaru yang dibuat untuk simulator apa pun dan memasangnya ke desktop.
https://gist.github.com/Gerst20051/8ca49d5afbf09007b3696fab6e9f425c
sumber
Di Swift 4 atau Swift 5 Anda dapat menggunakan
NSHomeDirectory()
.Cara termudah di Xcode 10 (atau Xcode 11) adalah untuk menjeda aplikasi Anda (seperti ketika itu mencapai breakpoint) dan menjalankan baris ini di konsol debugger:
po
singkatan dari objek cetak dan mencetak banyak halsumber
sumber
Dengan Swift 4, Anda dapat menggunakan kode di bawah ini untuk mendapatkan direktori home aplikasi Anda. Direktori dokumen aplikasi Anda ada di sana.
print(NSHomeDirectory())
Saya pikir Anda sudah tahu bahwa direktori home aplikasi Anda dapat diubah, jadi jika Anda tidak ingin menambahkan kode tambahan ke basis kode Anda, SimPholder adalah alat yang bagus untuk Anda.
Dan lebih jauh lagi, Anda mungkin bertanya-tanya apakah ada alat, yang dapat membantu Anda menghemat waktu dari penutupan dan pembukaan kembali database SQLite yang sama setiap kali setelah direktori home aplikasi Anda diubah. Dan jawabannya adalah ya, alat yang saya tahu adalah SQLiteFlow . Dari dokumen itu, dikatakan bahwa:
sumber
Inilah sh untuk simulator dan aplikasi yang terakhir digunakan. Jalankan saja sh dan salin teks cetak dan tempel dan jalankan perintah untuk show in finder.
sumber