TAGDataLayer 类参考

TAGDataLayer 类参考

概览

数据层是一个字典,用于保存有关应用的一般信息。

它使用一组标准的键,因此理解该规范的任何一方都可以读取它。数据层状态通过其 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

将给定的 update 对象合并到现有数据模型中,并使用更新调用任何监听器(合并发生后)。

字典(或嵌入式数组)中的值的类型为 NSNull 有效。如果要表示缺失值(例如 List 中的空索引),请使用 kTAGDataLayerObjectNotPresent 对象。

这通常是同步调用。不过,如果在线程执行推送时,同一线程又执行了一次推送,那么第二次推送是异步的(第二次推送将在对数据层进行更改之前返回)。例如,如果为响应代码触发而执行数据层推送,就会发生同一线程的第二次推送。不过,所有更新都将在最外层的推送返回之前得到处理。

如果 update 包含 event 键,系统会对规则进行评估,并触发匹配的代码。

参数:
update要处理的更新对象
- (NSObject*) get: (NSString *)  key

返回模型中与给定键关联的对象。

如果键不存在,则返回 nil。如果存在 key,但存在 NSNull,则返回 NSNull

键可以嵌入英文句点。例如:如果键为 "a.b.c",则返回字典中“c”键的值;对于模型,返回字典中的键为“b”,键为“a”。