Apa yang salah dengan kode saya untuk mendapatkan nama file di folder dokumen?
func listFilesFromDocumentsFolder() -> [NSString]?{
var theError = NSErrorPointer()
let dirs = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) as? [String]
if dirs != nil {
let dir = dirs![0] as NSString
let fileList = NSFileManager.defaultManager().contentsOfDirectoryAtPath(dir, error: theError) as [NSString]
return fileList
}else{
return nil
}
}
Saya pikir saya membaca dokumen dengan benar dan saya sangat yakin tentang apa yang ada di folder dokumen, tetapi "fileList" tidak menunjukkan apa-apa? "dir" menunjukkan jalur ke folder.
Jawaban:
Solusi ini berfungsi dengan Swift 4 (Xcode 9.2) dan juga dengan Swift 5 (Xcode 10.2.1+):
Berikut adalah ekstensi FileManager yang dapat digunakan kembali yang juga memungkinkan Anda melewati atau menyertakan file tersembunyi dalam hasil:
sumber
Cepat 5
sumber
.
awalan titik dan.cloud
akhiran di nama file. mencobanyalet icloudFiles = directoryContents.filter{ $0.pathExtension == "icloud" }
harus menunjukkan file yang tidak diunduhSintaks yang lebih pendek untuk SWIFT 3
Contoh penggunaan:
Diuji di xCode 8.2.3 untuk iPhone 7 dengan iOS 10.2 & iPad dengan iOS 9.3
sumber
Apple menyatakan tentang
NSSearchPathForDirectoriesInDomains(_:_:_:)
:Dengan Swift 5,
FileManager
memiliki metode yang disebutcontentsOfDirectory(at:includingPropertiesForKeys:options:)
.contentsOfDirectory(at:includingPropertiesForKeys:options:)
memiliki deklarasi berikut:Oleh karena itu, untuk mengambil url dari file yang terdapat dalam direktori dokumen, Anda dapat menggunakan potongan kode berikut yang menggunakan
FileManager
'surls(for:in:)
and 'contentsOfDirectory(at:includingPropertiesForKeys:options:)
:Sebagai contoh,
UIViewController
implementasi di bawah ini menunjukkan cara menyimpan file dari app bundle ke direktori dokumen dan cara mendapatkan url dari file yang disimpan di direktori dokumen:sumber
Kode ini mencetak semua direktori dan file di direktori dokumen saya:
Beberapa modifikasi fungsi Anda:
Yang dipanggil oleh:
sumber
Kompatibilitas Swift 2.0
ATAU
sumber
Solusi sederhana dan dinamis (Swift 5):
sumber