概览
数据层是一个字典,用于保存有关应用的一般信息。
它使用一组标准的键,因此理解该规范的任何一方都可以读取它。数据层状态通过其 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”。