0
以下のコードでは、私のホームディレクトリにあるファイル0.txt
にアクセスしようとしています。ホームディレクトリへのパスは文字列内に保存され、コール時にという名前が付加されます(0
は、プログラムが実行されるときに値を変更する参照カウンタです)。 0
)。ファイルが存在してもString(contentsOfFile)が失敗するのはなぜですか?
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"
}
}
しかし、このコードブロックを実行するたびには、戻り値は、failed
とラインFor some reason, the file couldn't be accessed
は~/0.txt
が存在していても、印刷されます。なぜこの異常な行動が起こっているのか誰にも考えてもらえますか?もしそうなら、どうすればこの問題を解決すべきですか?
質問:try-catchブロックによって生成されたエラーをstdoutに出力する方法はありますか?
* gasp *どうやってそのスラッシュが恋しいのか...ありがとう。私はどのようにして生成されたエラーも印刷することができますか? – perhapsmaybeharry
それはおそらく別の質問でしょう。しかし、ここでの遊び場からの作業例を示します: '行う{ のlet STR = NSStringの(contentsOfFile: "Foo.bar"、 エンコーディング:NSUTF8StringEncoding)してみてください } キャッチがエラーを聞かせするようNSError { プリント(error.localizedDescription) } ' – user212514
それは治療をしました。どうもありがとう! – perhapsmaybeharry