ภาพรวม
ชั้นข้อมูลคือพจนานุกรมที่มีข้อมูลทั่วไปเกี่ยวกับแอปพลิเคชัน
โดยใช้ชุดคีย์มาตรฐานเพื่อให้ผู้ที่เข้าใจข้อกำหนดนี้อ่านได้ สถานะของชั้นข้อมูลจะอัปเดตผ่าน API เช่น แอปอาจเริ่มต้นด้วย dataLayer ต่อไปนี้
{ title: "Original screen title" }
เนื่องจากสถานะ/ข้อมูลของแอปสามารถเปลี่ยนแปลงได้ แอปจึงอัปเดตชั้นข้อมูลด้วยการเรียก เช่น
[dataLayer push:@{@"title": @"New screen title"}];
ขณะนี้ชั้นข้อมูลประกอบด้วย
{ title: "New screen title" }
เมื่อมีข้อความ Push เกิดขึ้นอีก ให้ทำดังนี้
[dataLayer push:@{@"xyz": @3}];
dataLayer ประกอบด้วย
{ "title": "New screen title", "xyz": 3 }
ตัวอย่างต่อไปนี้แสดงวิธีการทำงานของอาร์เรย์และการรวมแผนที่ หากชั้นข้อมูลเดิมมีสิ่งต่อไปนี้
{ "items": @[@"item1", [NSNull null], @"item2", @{@"a": @"aValue", @"b": @"bValue"}] }
สิ่งที่จะเกิดขึ้นหลังจากข้อความ Push เกิดขึ้น
[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 ที่ระบุลงในโมเดลข้อมูลที่มีอยู่ ซึ่งจะเรียกใช้ Listener ที่มีการอัปเดต (หลังจากทำการผสานแล้ว) | |
(NSObject *) | - รับ: |
แสดงผลออบเจ็กต์ในโมเดลที่เชื่อมโยงกับคีย์ที่ระบุ |
เอกสารประกอบเกี่ยวกับฟังก์ชันสมาชิก
- (void) pushValue: | (NSObject *) | value | |
forKey: | (NSObject *) | คีย์ | |
พุชคู่คีย์/ค่าไปยังชั้นข้อมูล
นี่เป็นเพียงวิธีอำนวยความสะดวกที่โทรไปที่ push:@{key: value}
- (เป็นโมฆะ) push: | (พจนานุกรม NSD *) | อัปเดต |
ผสานออบเจ็กต์ update
ที่ระบุลงในโมเดลข้อมูลที่มีอยู่ ซึ่งจะเรียกใช้ Listener ที่มีการอัปเดต (หลังจากทำการผสานแล้ว)
ค่านี้ใช้ได้สำหรับค่าในพจนานุกรม (หรืออาร์เรย์ที่ฝัง) เป็นประเภท NSNull
หากต้องการแสดงค่าที่ขาดหายไป (เช่น ดัชนีที่ว่างเปล่าในรายการ) ให้ใช้ออบเจ็กต์ kTAGDataLayerObjectNotPresent
ซึ่งโดยปกติจะเป็นการเรียกแบบพร้อมกัน อย่างไรก็ตาม ขณะที่เทรดกำลังดำเนินการพุชอยู่ แต่มีพุชอีกรายการเกิดขึ้นจากเทรดเดียวกัน และพุชครั้งที่ 2 นั้นเป็นแบบไม่พร้อมกัน (การพุชครั้งที่ 2 จะแสดงผลก่อนที่จะมีการเปลี่ยนแปลงในชั้นข้อมูล) การพุชครั้งที่ 2 นี้จากเทรดเดียวกันอาจเกิดขึ้น เช่น เมื่อมีการพุชชั้นข้อมูลเพื่อตอบสนองต่อการเริ่มทํางานของแท็ก อย่างไรก็ตาม การอัปเดตทั้งหมดจะได้รับการประมวลผลก่อนที่การพุชด้านนอกสุดจะส่งคืน
หาก update
มีคีย์ event
ระบบจะประเมินกฎและแท็กที่ตรงกันจะเริ่มทำงาน
- พารามิเตอร์:
-
อัปเดต ออบเจ็กต์อัปเดตที่จะประมวลผล
- (NSObject*) get: | (NSString *) | คีย์ |
แสดงผลออบเจ็กต์ในโมเดลที่เชื่อมโยงกับคีย์ที่ระบุ
หากไม่มีคีย์ ระบบจะแสดงผล nil
หากมี key
อยู่ แต่ NSNull
จะแสดงผลเป็น NSNull
คีย์อาจมีจุดที่ฝังอยู่ได้ ตัวอย่างเช่น คีย์ของ "a.b.c"
จะแสดงผลค่าของคีย์ "c" ในพจนานุกรมพร้อมด้วยคีย์ "b" ในพจนานุกรมที่มีคีย์ "a" ในโมเดล