Domanda
Sto cercando di aprire un file per scriverlo. Il file potrebbe non esistere.
l'ho trovato [NSFileHandle fileHandleForWritingAtPath:filePath]
Restituisce zero se il file non esiste. Avendo cercato su Google, ho trovato frammenti di codice come questo
[[NSData data] writeToFile:filePath atomically:YES]
Il che, immagino, garantisce l'esistenza di file prima di aprirlo.
Le mie domande sono: quest'ultima riga di codice è consigliata la creazione di file? Sembra strano che NSFileHandle non abbia una routine per creare un nuovo file (e solo può gestire i file esistenti).
Soluzione
NSFileHandle
potrebbe non avere un metodo per creare un file, ma NSFileManager
Ha uno. Hai guardato quella classe?
Questo funziona bene per me, tuttavia si noti che ogni volta sovrascriverà lo stesso file
NSString *cachesFolder = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSString *file = [cachesFolder stringByAppendingPathComponent:@"testfile"];
[[NSData data] writeToFile:file options:NSDataWritingAtomic error:nil];
Altri suggerimenti
In Swift 4.x e 5.0, puoi farlo in questo modo:
let yourData = Data() // the data to write
let cachesFolderPath = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).first
if let path = cachesFolderPath {
let url = URL(fileURLWithPath: path).appendingPathComponent("xxx-cache")
do {
try yourData.write(to: url)
} catch {
print("writing failed: \(error.localizedDescription)")
}
}