TAGDataLayer 类参考

TAGDataLayer 类参考

概览

数据层是一个存储应用一般信息的字典。

它使用一组标准的键,以便了解该规范的任何一方读取该规范。数据层状态通过其 API 进行更新。例如,应用开头可能如下所示:

   {
     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 *)

将键值对推送到数据层。

这只是一种调用 push:@{key: value} 的便捷方法。

- (void) push (NSDictionary *)  update

将指定的 update 对象合并到现有数据模型中,并调用所有监听器(在合并后)进行更新。

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

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

如果 update 包含 event 键,则系统将对规则求值并触发匹配的代码。

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

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

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

键中可以包含嵌入句点。例如:键为 "a.b.c" 会返回“c”的值字典中包含键“b”的键包含键“a”的字典模型中。