總覽
資料層是存放應用程式一般資訊的字典,
這項功能使用一組標準的金鑰,因此瞭解規格的任何第三方都能讀取。資料層狀態會透過其 API 更新。比方說,應用程式開頭可能是下列 dataLayer:
{ title: "Original screen title" }
應用程式的狀態/資料可能會變更,因此應用程式可透過以下呼叫更新 dataLayer:
[dataLayer push:@{@"title": @"New screen title"}];
現在資料層包含:
{ title: "New screen title" }
再次推送發生後:
[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"}]} }
推送作業會同步進行;推送完成後,模型中已反映變更。
當 event
鍵推送至資料層時,系統會評估代碼的規則,並觸發與這個事件相符的所有代碼。舉例來說,假設有個容器有觸發規則的代碼,在執行此推送後,「event」等於「openScreen」:
[dataLayer push:@{@"event", @"openScreen"}];
該代碼將觸發
公開成員函式 | |
(void) | - pushValue:forKey: |
將鍵/值組合推送到資料層。 | |
(void) | - push: |
將指定 update 物件合併至現有資料模型,利用更新呼叫任何事件監聽器 (合併後)。 | |
(NSObject *) | - get: |
傳回與指定鍵相關聯的模型中的物件。 |
成員函式說明文件
- (void)PushValue: | (NSObject *) | value | |
forKey: | (NSObject *) | key | |
將鍵/值組合推送到資料層。
這只是呼叫 push:@{key: value}
的便利方法。
- (void) push: | (NSDictionary *) | 更新 |
將指定 update
物件合併至現有資料模型,利用更新呼叫任何事件監聽器 (合併後)。
字典 (或內嵌陣列) 的值屬於 NSNull
類型。如要表示遺漏值 (例如清單中的空白索引),請使用 kTAGDataLayerObjectNotPresent
物件。
這通常是同步呼叫。然而,如果在執行緒執行推送時,又從同一執行緒進行另一項推送,則第二個推送為非同步 (變更資料層前會傳回第二次推送)。舉例來說,如果系統為了回應代碼觸發而推送資料層,就會從同一執行緒執行第二次推送。不過,系統會在最外側推送傳回前處理所有更新。
如果 update
包含 event
鍵,系統會評估規則並觸發相符的代碼。
- 參數:
-
update 要處理的更新物件
- (NSObject*) get: | (NSString *) | key |
傳回與指定鍵相關聯的模型中的物件。
如果沒有鍵,則傳回 nil
。如果 key
存在,但 NSNull
就會傳回 NSNull
。
金鑰可以有內嵌的句點。例如:"a.b.c"
的鍵會傳回字典中「c」鍵的值,而字典中是「b」鍵,且索引鍵為「a」。