Wersja Swift 4.x.
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
let url = NSURL(fileURLWithPath: path)
if let pathComponent = url.appendingPathComponent("nameOfFileHere") {
let filePath = pathComponent.path
let fileManager = FileManager.default
if fileManager.fileExists(atPath: filePath) {
print("FILE AVAILABLE")
} else {
print("FILE NOT AVAILABLE")
}
} else {
print("FILE PATH NOT AVAILABLE")
}
Wersja Swift 3.x.
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
let url = URL(fileURLWithPath: path)
let filePath = url.appendingPathComponent("nameOfFileHere").path
let fileManager = FileManager.default
if fileManager.fileExists(atPath: filePath) {
print("FILE AVAILABLE")
} else {
print("FILE NOT AVAILABLE")
}
Wersja Swift 2.x , musisz użyć URLByAppendingPathComponent
let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
let url = NSURL(fileURLWithPath: path)
let filePath = url.URLByAppendingPathComponent("nameOfFileHere").path!
let fileManager = NSFileManager.defaultManager()
if fileManager.fileExistsAtPath(filePath) {
print("FILE AVAILABLE")
} else {
print("FILE NOT AVAILABLE")
}
Sprawdź poniższy kod:
Swift 1.2
Swift 2.0
źródło
var paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
absoluteString
do konwersjiNSURL
na,path
ale lepiej byłoby zachować ścieżkę jako string (NSString
), tak jak w Swift 1.2.Obecnie (2016) Apple zaleca bardziej używać URL powiązany API
NSURL
,NSFileManager
itd.Aby uzyskać katalog dokumentów w iOS i Swift 2 użyj
W
try!
tym przypadku jest bezpieczny, ponieważ istnieje gwarancja, że ten standardowy katalog istnieje.Następnie dołącz odpowiedni składnik ścieżki, na przykład plik
sqlite
plikTeraz sprawdź, czy plik istnieje z
checkResourceIsReachableAndReturnError
oNSURL
.Jeśli potrzebujesz błędu, przekaż
NSError
wskaźnik do parametru.Swift 3+:
checkResourceIsReachable
jest oznaczony jako może rzucaćAby wziąć pod uwagę tylko wartość logiczną zwracaną i zignorować błąd, użyj operatora łączenia zerowego
źródło
checkResourceIsReachable()
i po prostu wracaBool
doURL
typu.try - catch
nie zgłasza wyjątków. Nie da się tego porównać z wyjątkami w Objective-C. To wydajny system obsługi błędów.Jest całkiem przyjazny dla użytkownika. Po prostu pracuj z singletonem defaultManager NSFileManager, a następnie użyj
fileExistsAtPath()
metody, która po prostu przyjmuje ciąg znaków jako argument i zwraca wartość Bool, umożliwiając umieszczenie go bezpośrednio w instrukcji if.Zauważ, że obniżenie do String nie jest konieczne w Swift 2.
źródło
Alternatywny / zalecany wzorzec kodu w Swift 3 to:
Korzystanie z obsługi wyjątków
źródło
Swift 4.2
Za pomocą: -
źródło
Z korzyścią dla początkujących użytkowników Swift 3 :
Oto przykładowy kod do sprawdzenia, czy plik o nazwie „database.sqlite” istnieje w katalogu dokumentów aplikacji:
źródło
Bardzo proste: jeśli ścieżka jest instancją adresu URL, przekonwertuj ją na ciąg przy użyciu metody „path”.
źródło
Działa to dobrze dla mnie w swift4:
Możesz sprawdzić za pomocą tego połączenia:
Mam nadzieję, że komuś się przyda. @; -]
źródło
Musisz dodać ukośnik „/” przed nazwą pliku lub uzyskać ścieżkę, taką jak „... / DocumentsFilename.jpg”
źródło
Przykład języka Swift 4 :
Umieściłem kontrolę w mojej funkcji loadData, którą wywołałem w viewDidLoad.
Następnie zdefiniowałem loadData poniżej.
źródło
pracuje w Swift 5
gdzie
"userInfo"
- nazwa"sqlite3"
pliku i - rozszerzenie plikuźródło