ソフトウェア開発メモ

日々のソフトウェア設計、実装で考えている、気づいた事を書いています。それが真実か否かは保証しません。悪しからず。

iOS クラス探訪、〜Object、〜Entityクラス編

はじめに

モデル系フレームワークのエンティティ系オブジェクトの基底クラスを表す。NSManagedObjectが有名。

内部で使っているであろう永続化機構(SQLite or Core Data?)に関連したメソッドを提供している事が多い。各属性の列挙アクセス、変更した属性値を破棄する。変更状態を保持するとか。このクラスを基点に各々のクラスへ派生する。

NSManagedObject

言わずと知れたCore Dataのオブジェクトを表す。挿入された/削除された/フォルト等のCore Data独特のオブジェクトライフサイクルの把握、属性や関連オブジェクトへのアクセス手段、自身の編集状態の把握等のタスクを請け負っている。

カスタムのサブクラスを作れる様に状態変化をフックするためのトリガーメソッドを提供している。

EKObject

Event Kitのエンティティ系クラスの基底クラス。   NSManagedObjectと同じような位置づけだが、Event Kitでの使用に特化しているためか、編集状態の把握ぐらいしが外部に公開していない。

イベント関係のモデル構築に特化している関係上、当然の事ながらカスタムのサブクラスは作成できない。

MPMediaEntity

 楽曲、アルバム、プレイリストを構成するクラスの基底クラス、プロパティへの列挙アクセス。フィルター可能なプロパティか否かの判定手段のみ提供している。

 個人的には、MPMediaEntityからMPMediaItemとMPMediaItemCollectionを派生される必要があったのかは謎?抽象的に使い回したいというニーズはないと思う。

Home Kit、Health Kit、iCloud Kit関係とかにも類似のオブジェクトがあるがまあ後で。。。