しおメモ

雑多な技術系ブログです。ニッチな内容が多いです。

2021-01-01から1年間の記事一覧

Property wrapperを使ってCodableの一部のプロパティをencodeしないようにする

最近リファクタをしていて、同じオブジェクトを使ってencodeとdecodeをする際に、必要なケースがでてきたので書きました。 状況 Property wrapperを使った解決 Equatableへの応用 サンプルコード 状況 以下のHogeのように一部のパラメーターでdecodeはしたい…

よくある実装でDateComponentsFormatterやRelativeDateTimeFormatterを使う

DateFormatterに関しては古くからあり、おおよそのプロジェクトで使われているイメージですが、DateComponentsFormatterやRelativeDateTimeFormatter(iOS13+なので最近)については体感としてあまり使われておらず、特に歴史のあるプロジェクトでは独自のform…

potatotips #74に参加して発表しました

6月23日(水)にPotatotips #74に参加させていただき、iOS枠で発表しました。 potatotips.connpass.com ちょうどWWDCの後だったこともあり、SharePlayやGroup Activitiesなど、自分がキャッチアップできていない部分のお話を聞けて、とても楽しかったです。 An…

LLDB経由でPythonを利用してStringの示すURLを開く

iOS開発をしていてデバッグする際に、コピーしたり、"を外したりするのが地味にめんどくさいので作ってみました。 今回は、SwiftのStringをopenurl hogeのようなコマンドで開くのを目指します。(Swift以外でもほぼ同じです) openurlコマンドの作成 コマンド…

git mergeのコンフリクト解消にvimdiffを使う

git

普段からVimを使うようなその道の人には有名かと思いますが、XcodeやらVSCodeやらを使う人々にとっても、おすすめできるので書いてみました。 自分もiOSやる前はEmacsユーザーで、正直あんまりVimは慣れていないのですが、それでも使いやすいです。 git merg…

OSLogを利用したロギング

iOS開発でログを利用する場合、自前のロガーを利用したり、OSSを利用する選択肢が多いですが、標準のOSLogのAPIが新しくなり、iOS14以降で使いやすくなりそうなので、紹介します。 printと比べて何が良いか OSLogを利用した出力 Loggerを用意する ログを出力…

NSObjectを継承したクラスでEquatableの操作をする

NSObjectは自身がEquatableなので、==やEquatableに対するメソッドが呼べたりするのですが、デフォルトの動作はポインタを比較するSwiftでいう===相当なので気をつけましょう。 final class Hoge: NSObject { let value: Int init(_ value: Int) { self.valu…