Swift2をよく調べずに、Swift2を試してみようと、とりあえず、前に作ったテキストファイルの内容をソートするxsortをXCode7で開いてい見た。Swift2は、Swift1と互換性がないような変更が行われているらしいので、ここでプロジェクトのコンバートツールが動き出す。素直にXCodeのいいなりにコンバートを進めて完了。ビルドするとエラーが!(>_<)
まっ、そんなうまいこと行くわけがないわな・・・
エラーが出たのはこんなところ。
var err:NSError? = NSError()
var s = String(contentsOfFile: (args[i] as String), encoding: NSUTF8StringEncoding, error: &err)
2行目は、イニシャライザはないって言うような、エラーが出ているみたい。とりあえず、2行目を調べて見よう。
2行目は、ファイルをすべてUTF8の文字列として読み込み変数sに代入する処理だ。ヘルプで見ると、
convenience init(contentsOfFile path: String,
encoding enc: UInt) throws
って、throwsってのが気になるが、こんな感じでいいのかな〜と書いてみる。
var s = String.init(contentsOfFile: args[i], encoding: NSUTF8StringEncoding)
エラーになった(^^;)
確かどっかでJavaやC#なんかである例外処理みたいのが追加されたって言ってたな〜と言うことで調べてみる。こんな感じになる。
var s:String;
do {
s = try String.init(contentsOfFile: args[i], encoding: NSUTF8StringEncoding)
} catch let err {
let errmsg = "Read ERROR(\(args[i]))\n"
stderr.writeData(errmsg.dataUsingEncoding(NSUTF8StringEncoding)!)
exit(1)
}
とりあえずは、throwsがついてる関数は、頭にtryを付けて、do〜catchで例外を捕捉するんだな。
また今度ちゃんと調べよう(^^;)
コメント