私の場合は NSMutableData を保存する際に使用する write(to:options:) の URL を参照したい場面があったのですが、デフォルトでは参照できないし、新たに URL だけ保持するのも嫌じゃないですか ‾᷅༬‾᷄)
NSMutableData から参照できたらコードもスッキリすんのになぁーと思い、Extensions でプロパティを追加する方法をここに残します。
開発環境(前提条件)
・Xcode11.5
・Swift5
コード
調べてみると、struct とか objc_getAssociatedObject を使ってる記事が多いのですが、何かとごちゃついてる感が否めなくて、しっくり来ねーな…って感じでしたが、最高にスッキリしてる方法があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
extension NSMutableData { private static var _writeURL: URL? var writeURL: URL? { get { return NSMutableData._writeURL } set(newValue) { NSMutableData._writeURL = newValue } } } |
シンプルゥ⤴︎⤴︎⤴︎
これが一番スッキリしているかと思います。
私は write(to:options:) の中で NSMutableData.writeURL に書き込むようにしています。
保存したら writeURL も参照できるようになるので、個人的にはサイコーです。笑
Extension を使用したプロパティの追加を書きたかったので、別に NSMutableData じゃなくてもいいんですけどね。
さいごに
どのクラスにも新たにプロパティの追加ができますが、乱用しまくると何が何だかわからないコードになるので、大人数で開発してるプロジェクトで使う場合は注意が必要っすね…(((゚Д゚))
コメント