Aşağıdaki kodda, ev dizinimde bulunan bir dosyaya 0.txt
erişmeye çalışıyorum. Giriş dizininin yolu bir dize içinde kaydedilir ve 0.txt
adı, çağrı üzerine eklenir (0
, program çalışırken değerleri değiştirecek olan bir referans sayacıdır. Soru sorusu için, buna 0
).Dize (contentOfFile) dosya neden olmasa bile neden başarısız olur?
func loadfile(counter: Int) -> String { // counter here is assumed to be "0"
var contents = String()
var defaultpath = ("~/" as NSString).stringByExpandingTildeInPath as String
do {
contents = try String(contentsOfFile: defaultpath.stringByAppendingString(String("\(counter).txt")))
return contents
} catch {
print("For some reason, the file couldn't be accessed.")
return "failed"
}
}
Bununla birlikte, bu kod bloğu çalışan her zaman, dönüş değeri failed
ve hat For some reason, the file couldn't be accessed
~/0.txt
var olsa bile, basılır. Bu anormal davranışın neden oluştuğuna dair bir fikri olan var mı, eğer öyleyse, bu sorunu nasıl çözmeliyim?
Yan soru: try-catch bloğu tarafından oluşturulan hataları stdout'a yazdırmanın bir yolu var mı?
* gasp * Sondaki eğik çizgiyi nasıl özledim ... Teşekkürler. Herhangi bir şansla, üretilen hataları nasıl yazdırabilirim? – perhapsmaybeharry
Bu muhtemelen ayrı bir soru olmalı. Ama burada bir oyun alanından bir çalışma örnek: 'do { let str = NSString (contentsOfFile: "foo.bar", kodlama: NSUTF8StringEncoding) denemeye } catch hata izin olarak NSError { baskı (error.localizedDescription) } – user212514
Bu bir tedavi çalıştı. Çok teşekkürler! – perhapsmaybeharry