【Console Application】ファイルとデータベース 320【学習記】
今回の概略
ファイルの書き出しは NSString とほぼほぼ同じだけど、書き出し関数の返値に期待する処理なら変更必須😑
OC の NSString ではエラー用変数を引数に参照渡ししてそれを調べてエラー処理だったけど Swift では try 書かないとだめ🙄
前回の粗筋
全部の列挙値に同じ Associated Value が付いてたら纏める方法が有ったら良かったのになぁ…😑
Csv
enum Error
じゃ、新しくした例外の形に対応してこうかしらね🤤
まずこの message をリファクタリングかな🤔
OC の作法に合わせたのなら名前も OC に合わせるべきって話で🤤
………
リファクタリング効かないんですけど🙄
まぁ普通の置換でいいや。まだ外部で参照されてないから🤤
以前、先に例外作ってから throw する方式をここでも採用すると、なんか凄いお手軽感🤤
原本では やってないけどカスタム例外で楽をする、というのは割りと普通の手段なのかな、これを見る限りでは🤔
エラー種とメッセージだけ受け取って中で色々処理して例外を投げるカスタム例外…良さそう🤪️
かなり使いやすい気がする🤤
修正前のごちゃごちゃしたやつ見てよ…😞
移植再開
あ…候補出てこないけどこれ OC だとファイル読み込みが原本と違うから Stdlib に足したやつだけど Swift の Stdlib は原本見ながら移したから抜けてるっぽ😞
とりあえず無視して進む🤪
それで、期待してた String のファイル書出しはどうなってるのかな🤤
let path = NSHomeDirectory() + "/Documents/LoveLetterForReply.txt"
let text = "書き込みたい内容"
do {
// テキストの書き込みを実行
try text.write(toFile: path, atomically: true, encoding: .utf8)
print("成功\nopen", path)
} catch {
// テストの書き込みに失敗
print("失敗:", error )
}
ほぼほぼ NSString の時と一緒かな🤤
なんか atomically とかいうのが増えてるくらい?🤔
String は NSString ではないので返値が違うのは仕方ないんだけど返値が何になってるか確認する方法が無いの困る😞
func write(
to url: URL,
atomically useAuxiliaryFile: Bool,
encoding enc: String.Encoding
) throws
void っぽ🤤
そういや何だったかを調べる時に見たけど返値無しでも省略されてるだけで 所謂 C 言語的な返値 void でも何かしらの値を返していて Swift は空のタプルを返す仕様ってのを🤔
つまりこれは、空のタプルを真偽値に変換できないぞって言ってるのね?🤔
まぁどのみち throws 付いてるので try 書かないとならないけど OC ではエラー検知用変数渡すから try 書いてないっていうオチ😞
次回は
原本に無くて OC には有る Stdlib の機能を移植するぽ🤤
StrArray とかは [String] なので移植しなくて大丈夫だけど、そういうのが固まってて飛ばした中に、移植しないといけないのも入ってて今の事態に陥ってるっぽ😞