概要
データレイヤは、アプリケーションに関する汎用情報を保持する辞書です。
標準の鍵のセットを使用するため、仕様を理解している人なら誰でも読み取ることができます。データレイヤーの状態は API を通じて更新されます。たとえば、アプリは次の dataLayer で開始します。
{ title: "Original screen title" }
アプリの状態やデータが変化する可能性があるため、次のような呼び出しで dataLayer を更新できます。
[dataLayer push:@{@"title": @"New screen title"}];
これで、データレイヤーには次のものが追加されました。
{ title: "New screen title" }
別の push が行われた後:
[dataLayer push:@{@"xyz": @3}];
dataLayer には以下が含まれます。
{ "title": "New screen title", "xyz": 3 }
次の例は、配列とマップのマージの仕組みを示しています。元の dataLayer に以下が含まれているとします。
{ "items": @[@"item1", [NSNull null], @"item2", @{@"a": @"aValue", @"b": @"bValue"}] }
このプッシュ後:
[dataLayer push:@{@"items": @[[NSNull null], @"item6", kTAGDataLayerObjectNotPresent, @{@"a": [NSNull null]}]}
dataLayer には以下が含まれます。
{ "items": @[[NSNull null], @"item6", @"item2", @{@"a": [NSNull null], @"b": @"bValue"}]} }
push は同期的に行われます。push 後、変更がモデルに反映されます。
event
キーがデータレイヤーにプッシュされると、タグのルールが評価され、このイベントに一致するすべてのタグが配信されます。たとえば、コンテナに「event」が「openScreen」と等しい配信ルールのタグが設定されている場合、このプッシュは以下のようになります。
[dataLayer push:@{@"event", @"openScreen"}];
指定できます
パブリック メンバー関数 | |
(void) | - pushValue:forKey: |
Key-Value ペアをデータレイヤーにプッシュします。 | |
(void) | - push: |
指定された update オブジェクトを既存のデータモデルにマージし、更新があればリスナーを呼び出します(マージの実行後)。 | |
(NSObject *) | - get: |
指定されたキーに関連付けられているモデルのオブジェクトを返します。 |
メンバー関数のドキュメント
- (void) pushValue: | (NSObject *) | value | |
forKey: | (NSObject *) | キー | |
Key-Value ペアをデータレイヤーにプッシュします。
これは、push:@{key: value}
を呼び出す単なるコンビニエンス メソッドです。
- (void) push: | (NSDictionary *) | update |
指定された update
オブジェクトを既存のデータモデルにマージし、更新があればリスナーを呼び出します(マージの実行後)。
ディクショナリ(または埋め込み配列)内の値の型が NSNull
であることは有効です。欠損値(List の空のインデックスなど)を表す場合は、kTAGDataLayerObjectNotPresent
オブジェクトを使用します。
通常、これは同期呼び出しです。ただし、プッシュの実行中に同じスレッドから別のプッシュが発生した場合、その 2 回目のプッシュは非同期となります(2 回目のプッシュはデータレイヤーが変更される前に戻ります)。同じスレッドから 2 回目のプッシュが行われるのは、タグの配信に応答してデータレイヤーのプッシュが行われた場合などです。ただし、すべての更新は、最も外側の push が返される前に処理されます。
update
にキー event
が含まれている場合、ルールが評価され、一致するタグが配信されます。
- パラメータ:
-
update 処理する更新オブジェクト
- (NSObject*) get: | (NSString *) | key |
指定されたキーに関連付けられているモデルのオブジェクトを返します。
キーが存在しない場合は、nil
を返します。key
が存在する場合、NSNull
の場合は NSNull
を返します。
キーにピリオドを埋め込むことができます。たとえば、キーが "a.b.c"
の場合、辞書のキー「c」の値が返されます。キー「b」は辞書内のキー「b」で、モデルではキー「a」が使われています。