私の場合は NSMutableData を保存する際に使用する write(to:options:) の URL を参照したい場面があったのですが、デフォルトでは参照できないし、新たに URL だけ保持するのも嫌じゃないですか ‾᷅༬‾᷄)
NSMutableData から参照できたらコードもスッキリすんのになぁーと思い、Extensions でプロパティを追加する方法をここに残します。
開発環境(前提条件)
・Xcode11.5
・Swift5
コード
調べてみると、struct とか objc_getAssociatedObject を使ってる記事が多いのですが、何かとごちゃついてる感が否めなくて、しっくり来ねーな…って感じでしたが、最高にスッキリしてる方法があります。
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 じゃなくてもいいんですけどね。
さいごに
どのクラスにも新たにプロパティの追加ができますが、乱用しまくると何が何だかわからないコードになるので、大人数で開発してるプロジェクトで使う場合は注意が必要っすね…(((゚Д゚))



コメント