跳转到内容

WDGDataSnapshot

WDGDataSnapshot 是当前指定节点下数据的快照,WDGDataSnapshot 不会随当前节点数据的变化而发生改变。 我们无法直接创建这个对象,而应当在 [WDGSyncReference observeEventType:withBlock:] 或 [WDGSyncReference observeSingleEventOfType:withBlock:] 的回调函数中获取它。

Swift
```swift var value: Any? { get } ```
Objective-C
```objectivec @property (readonly, strong, nonatomic, nullable) id value; ```

当前数据快照包含的数据。数据类型取决于节点下的数据内容。

可能返回的数据类型包括:

  • NSDictionary
  • NSArray
  • NSNumber (包含 BOOL 类型)
  • NSString


Swift
```swift var childrenCount: UInt { get } ```
Objective-C
```objectivec @property (readonly, nonatomic) NSUInteger childrenCount; ```

WDGDataSnapshot 的子节点的总数。



Swift
```swift var ref: WDGSyncReference { get } ```
Objective-C
```objectivec @property (readonly, strong, nonatomic) WDGSyncReference *ref; ```

当前数据快照所关联的 WDGSyncReference 实例。



Swift
```swift var key: String { get } ```
Objective-C
```objectivec @property (readonly, strong, nonatomic) NSString *key; ```

当前 WDGDataSnapshot 所属节点的 key。



Swift
```swift var children: NSEnumerator { get } ```
Objective-C
```objectivec @property (readonly, strong, nonatomic) NSEnumerator *children; ```

当前 WDGDataSnapshot 中,所有子节点的迭代器。 例如:

for (WDGDataSnapshot *child in snapshot.children) {
...
}


Swift
```swift var priority: Any? { get } ```
Objective-C
```objectivec @property (readonly, strong, nonatomic, nullable) id priority; ```

当前节点的 priority 值。优先级不存在时为 nil。



Swift
```swift func childSnapshot(forPath childPathString: String) -> WDGDataSnapshot ```
Objective-C
```objectivec - (WDGDataSnapshot *)childSnapshotForPath:(NSString *)childPathString; ```

根据相对路径,来获取当前节点下子节点的数据快照。 相对路径可以是一个字节点的 key 值(例如:Beijing),也可以是更深层次的路径(例如:Beijing/pm25)。 如果相对路径下并没有数据,则返回 nil。 根据指定的相对路径,来获取当前节点下的 WDGDataSnapshot。

参数名 说明
childPathString 节点数据的相对路径,多层级间需要使用 / 分隔。

WDGDataSnapshot 实例。



Swift
```swift func hasChild(_ childPathString: String) -> Bool ```
Objective-C
```objectivec - (BOOL)hasChild:(NSString *)childPathString; ```

判断是否存在某个指定的子节点。如果指定节点下的数据不为空,则返回 YES。

参数名 说明
childPathString 相对路径

如果指定路径下存在子节点,返回 YES,否则返回 NO。



Swift
```swift func hasChildren() -> Bool ```
Objective-C
```objectivec - (BOOL)hasChildren; ```

如果 WDGDataSnapshot 存在子节点返回 YES,否则返回 NO。 你可以通过使用 hasChildren 方法来确定当前的数据快照是否含有子节点,进而决定是否利用 children 属性遍历数据。

如果 WDGDataSnapshot 存在子节点返回 YES,否则返回 NO。



Swift
```swift func exists() -> Bool ```
Objective-C
```objectivec - (BOOL)exists; ```

判断当前 WDGDataSnapshot 实例中是否包含数据。使用 exists 方法进行非空判断比 snapshot.value != nil 更高效。

如果 WDGDataSnapshot 包含非空数据,返回 YES。



Swift
```swift func valueInExportFormat() -> Any? ```
Objective-C
```objectivec - (id _Nullable)valueInExportFormat; ```

将 WDGDataSnapshot 中的全部内容导出。 valueInExportFormat 方法和 value 方法类似,都可以导出数据。但是当节点的 priority 值不为空时,valueInExportFormat 会导出包含 priority 的数据,适合用于备份。