| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678 |
- //
- // Copyright 2021 Google LLC
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- //
- // MARK: This file is used to evaluate the experience of using the Firebase Database APIs in Swift.
- import Foundation
- import FirebaseCore
- import FirebaseDatabase
- final class DatabaseAPITests {
- func usage() {
- // MARK: - Database
- var url = "url"
- let path = "path"
- let host = "host"
- let port = 0
- let yes = true
- // Retrieve Database Instance
- var database: Database = Database.database()
- database = Database.database(url: url)
- if let app = FirebaseApp.app() {
- database = Database.database(app: app, url: url)
- database = Database.database(app: app)
- }
- // Retrieve FirebaseApp
- let /* app */ _: FirebaseApp? = database.app
- // Retrieve DatabaseReference
- var databaseReference: DatabaseReference = database.reference()
- databaseReference = database.reference(withPath: path)
- databaseReference = database.reference(fromURL: url)
- // Instance methods
- database.purgeOutstandingWrites()
- database.goOffline()
- database.goOnline()
- database.useEmulator(withHost: host, port: port)
- // Instance members
- let /* isPersistenceEnabled */ _: Bool = database.isPersistenceEnabled
- let /* persistenceCacheSizeBytes */ _: UInt = database.persistenceCacheSizeBytes
- let /* callbackQueue */ _: DispatchQueue = database.callbackQueue
- // Class methods
- Database.setLoggingEnabled(yes)
- let /* sdkVersion */ _: String = Database.sdkVersion()
- // MARK: - DatabaseQuery
- let uint: UInt = 0
- let dataEventType: DataEventType = .value
- let child = "child"
- let childKey: String? = "key"
- let value: Any? = "value"
- let priority: Any? = "priority"
- var databaseHandle: DatabaseHandle = uint
- var databaseQuery: DatabaseQuery = DatabaseQuery()
- // Observe for data
- // observe(_ eventType:with block:)
- databaseHandle = databaseQuery.observe(dataEventType) { dataSnapshot in
- let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
- }
- // observe(_ eventType:andPreviousSiblingKeyWith block:)
- databaseHandle = databaseQuery.observe(dataEventType) { dataSnapshot, optionalString in
- let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
- let /* optionalString */ _: String? = optionalString
- }
- // observe(_ eventType:with block:withCancel cancelBlock:)
- databaseHandle = databaseQuery.observe(dataEventType) { dataSnapshot in
- let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
- } withCancel: { error in
- let /* error */ _: Error = error
- }
- // observe(_ eventType:andPreviousSiblingKeyWith block:withCancel cancelBlock:)
- databaseHandle = databaseQuery.observe(dataEventType) { dataSnapshot, optionalString in
- let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
- let /* optionalString */ _: String? = optionalString
- } withCancel: { error in
- let /* error */ _: Error = error
- }
- // Get data
- // getData(completion block:)
- databaseQuery.getData { optionalError, dataSnapshot in
- let /* optionalError */ _: Error? = optionalError
- let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
- }
- #if compiler(>=5.5) && canImport(_Concurrency)
- if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
- // async/await is a Swift 5.5+ feature available on iOS 15+
- Task {
- do {
- let /* dataSnapshot */ _: DataSnapshot = try await DatabaseQuery().getData()
- } catch {
- // ...
- }
- }
- }
- #endif // swift(>=5.5)
- // Observe Single Event
- // observeSingleEvent(of eventType:with block:)
- databaseQuery.observeSingleEvent(of: dataEventType) { dataSnapshot in
- let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
- }
- // observeSingleEvent(of eventType:andPreviousSiblingKeyWith block:)
- databaseQuery.observeSingleEvent(of: dataEventType) { dataSnapshot, optionalString in
- let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
- let /* optionalString */ _: String? = optionalString
- }
- #if compiler(>=5.5) && canImport(_Concurrency)
- if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
- // async/await is a Swift 5.5+ feature available on iOS 15+
- Task {
- // observeSingleEvent(of eventType:)
- let _: (DataSnapshot, String?) = await DatabaseQuery()
- .observeSingleEventAndPreviousSiblingKey(of: dataEventType)
- }
- }
- #endif // swift(>=5.5)
- // observeSingleEvent(of eventType:with block:withCancel cancelBlock:)
- databaseQuery.observeSingleEvent(of: dataEventType) { dataSnapshot in
- let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
- } withCancel: { error in
- let /* error */ _: Error = error
- }
- // observeSingleEvent(of eventType:andPreviousSiblingKeyWith block:withCancel cancelBlock:)
- databaseQuery.observeSingleEvent(of: dataEventType) { dataSnapshot, optionalString in
- let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
- let /* optionalString */ _: String? = optionalString
- } withCancel: { error in
- let /* error */ _: Error = error
- }
- // Remove Observers
- databaseQuery.removeObserver(withHandle: databaseHandle)
- databaseQuery.removeAllObservers()
- // Keep Synced
- databaseQuery.keepSynced(yes)
- // Limited Views of Data
- databaseQuery = databaseQuery.queryLimited(toFirst: databaseHandle)
- databaseQuery = databaseQuery.queryLimited(toLast: databaseHandle)
- databaseQuery = databaseQuery.queryOrdered(byChild: child)
- databaseQuery = databaseQuery.queryOrderedByKey()
- databaseQuery = databaseQuery.queryOrderedByValue()
- databaseQuery = databaseQuery.queryOrderedByPriority()
- databaseQuery = databaseQuery.queryStarting(atValue: value)
- databaseQuery = databaseQuery.queryStarting(atValue: value, childKey: childKey)
- databaseQuery = databaseQuery.queryStarting(afterValue: value)
- databaseQuery = databaseQuery.queryStarting(afterValue: value, childKey: childKey)
- databaseQuery = databaseQuery.queryEnding(atValue: value)
- databaseQuery = databaseQuery.queryEnding(beforeValue: value)
- databaseQuery = databaseQuery.queryEnding(beforeValue: value, childKey: childKey)
- databaseQuery = databaseQuery.queryEqual(toValue: value)
- databaseQuery = databaseQuery.queryEqual(toValue: value, childKey: childKey)
- // Retrieve DatabaseReference Instance
- databaseReference = databaseQuery.ref
- // MARK: - DatabaseReference
- let priorityAny: Any = "priority"
- let values = [AnyHashable: Any]()
- var transactionResult = TransactionResult()
- // Retreive Child DatabaseReference
- databaseReference = databaseReference.child(child)
- databaseReference = databaseReference.childByAutoId()
- // Set value
- databaseReference.setValue(value)
- // setValue(_ value:withCompletionBlock block:)
- databaseReference.setValue(value) { optionalError, databaseReference in
- let /* optionalError */ _: Error? = optionalError
- let /* databaseReference */ _: DatabaseReference = databaseReference
- }
- #if compiler(>=5.5) && canImport(_Concurrency)
- if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
- // async/await is a Swift 5.5+ feature available on iOS 15+
- Task {
- do {
- // setValue(_ value:)
- let /* ref */ _: DatabaseReference = try await DatabaseReference().setValue(value)
- } catch {
- // ...
- }
- }
- }
- #endif // swift(>=5.5)
- databaseReference.setValue(value, andPriority: priority)
- // setValue(_ value:andPriority priority:withCompletionBlock block:)
- databaseReference.setValue(value, andPriority: priority) { optionalError, databaseReference in
- let /* optionalError */ _: Error? = optionalError
- let /* databaseReference */ _: DatabaseReference = databaseReference
- }
- #if compiler(>=5.5) && canImport(_Concurrency)
- if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
- // async/await is a Swift 5.5+ feature available on iOS 15+
- Task {
- do {
- // setValue(_ value:andPriority priority:)
- let /* ref */ _: DatabaseReference = try await DatabaseReference()
- .setValue(value, andPriority: priority)
- } catch {
- // ...
- }
- }
- }
- #endif // swift(>=5.5)
- // Remove value
- databaseReference.removeValue()
- // removeValue(completionBlock block:)
- databaseReference.removeValue { optionalError, databaseReference in
- let /* optionalError */ _: Error? = optionalError
- let /* databaseReference */ _: DatabaseReference = databaseReference
- }
- #if compiler(>=5.5) && canImport(_Concurrency)
- if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
- // async/await is a Swift 5.5+ feature available on iOS 15+
- Task {
- do {
- let /* ref */ _: DatabaseReference = try await DatabaseReference().removeValue()
- } catch {
- // ...
- }
- }
- }
- #endif // swift(>=5.5)
- // Set priority
- databaseReference.setPriority(priority)
- // setPriority(_ priority:withCompletionBlock block:)
- databaseReference.setPriority(priority) { optionalError, databaseReference in
- let /* optionalError */ _: Error? = optionalError
- let /* databaseReference */ _: DatabaseReference = databaseReference
- }
- #if compiler(>=5.5) && canImport(_Concurrency)
- if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
- // async/await is a Swift 5.5+ feature available on iOS 15+
- Task {
- do {
- // setPriority(_ priority:)
- let /* ref */ _: DatabaseReference = try await DatabaseReference().setPriority(priority)
- } catch {
- // ...
- }
- }
- }
- #endif // swift(>=5.5)
- // Update child values
- databaseReference.updateChildValues(values)
- // updateChildValues(_ values:withCompletionBlock block:)
- databaseReference.updateChildValues(values) { optionalError, databaseReference in
- let /* optionalError */ _: Error? = optionalError
- let /* databaseReference */ _: DatabaseReference = databaseReference
- }
- #if compiler(>=5.5) && canImport(_Concurrency)
- if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
- // async/await is a Swift 5.5+ feature available on iOS 15+
- Task {
- do {
- // updateChildValues(_ values:)
- let /* ref */ _: DatabaseReference = try await DatabaseReference()
- .updateChildValues(values)
- } catch {
- // ...
- }
- }
- }
- #endif // swift(>=5.5)
- // Observe for data
- // observe(_ eventType:with block:)
- databaseHandle = databaseReference.observe(dataEventType) { dataSnapshot in
- let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
- }
- // observe(_ eventType:andPreviousSiblingKeyWith block:)
- databaseHandle = databaseReference.observe(dataEventType) { dataSnapshot, optionalString in
- let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
- let /* optionalString */ _: String? = optionalString
- }
- // observe(_ eventType:with block:withCancel cancelBlock:)
- databaseHandle = databaseReference.observe(dataEventType) { dataSnapshot in
- let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
- } withCancel: { error in
- let /* error */ _: Error = error
- }
- // observe(_ eventType:andPreviousSiblingKeyWith block:withCancel cancelBlock:)
- databaseHandle = databaseReference.observe(dataEventType) { dataSnapshot, optionalString in
- let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
- let /* optionalString */ _: String? = optionalString
- } withCancel: { error in
- let /* error */ _: Error = error
- }
- // Observe Single Event
- // observeSingleEvent(of eventType:with block:)
- databaseReference.observeSingleEvent(of: dataEventType) { dataSnapshot in
- let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
- }
- // observeSingleEvent(of eventType:andPreviousSiblingKeyWith block:)
- databaseReference.observeSingleEvent(of: dataEventType) { dataSnapshot, optionalString in
- let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
- let /* optionalString */ _: String? = optionalString
- }
- #if compiler(>=5.5) && canImport(_Concurrency)
- if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
- // async/await is a Swift 5.5+ feature available on iOS 15+
- Task {
- // observeSingleEvent(of eventType:)
- let _: (DataSnapshot, String?) = await DatabaseReference()
- .observeSingleEventAndPreviousSiblingKey(of: dataEventType)
- }
- }
- #endif // swift(>=5.5)
- // observeSingleEvent(of eventType:with block:withCancel cancelBlock:)
- databaseReference.observeSingleEvent(of: dataEventType) { dataSnapshot in
- let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
- } withCancel: { error in
- let /* error */ _: Error = error
- }
- // observeSingleEvent(of eventType:andPreviousSiblingKeyWith block:withCancel cancelBlock:)
- databaseReference.observeSingleEvent(of: dataEventType) { dataSnapshot, optionalString in
- let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
- let /* optionalString */ _: String? = optionalString
- } withCancel: { error in
- let /* error */ _: Error = error
- }
- // Get data
- // getData(completion block:)
- databaseReference.getData { optionalError, dataSnapshot in
- let /* optionalError */ _: Error? = optionalError
- let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
- }
- #if compiler(>=5.5) && canImport(_Concurrency)
- if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
- // async/await is a Swift 5.5+ feature available on iOS 15+
- Task {
- do {
- let /* dataSnapshot */ _: DataSnapshot = try await DatabaseReference().getData()
- } catch {
- // ...
- }
- }
- }
- #endif // swift(>=5.5)
- // Remove Observers
- databaseReference.removeObserver(withHandle: databaseHandle)
- databaseReference.removeAllObservers()
- // Keep Synced
- databaseReference.keepSynced(yes)
- // Limited Views of Data
- databaseQuery = databaseReference.queryLimited(toFirst: databaseHandle)
- databaseQuery = databaseReference.queryLimited(toLast: databaseHandle)
- databaseQuery = databaseReference.queryOrdered(byChild: child)
- databaseQuery = databaseReference.queryOrderedByKey()
- databaseQuery = databaseReference.queryOrderedByPriority()
- databaseQuery = databaseReference.queryStarting(atValue: value)
- databaseQuery = databaseReference.queryStarting(atValue: value, childKey: childKey)
- databaseQuery = databaseReference.queryStarting(afterValue: value)
- databaseQuery = databaseReference.queryStarting(afterValue: value, childKey: childKey)
- databaseQuery = databaseReference.queryEnding(atValue: value)
- databaseQuery = databaseReference.queryEnding(atValue: value, childKey: childKey)
- databaseQuery = databaseReference.queryEqual(toValue: value)
- databaseQuery = databaseReference.queryEqual(toValue: value, childKey: childKey)
- // onDisconnectSetValue
- databaseReference.onDisconnectSetValue(value)
- // onDisconnectSetValue(_ value:withCompletionBlock block:)
- databaseReference.onDisconnectSetValue(value) { optionalError, databaseReference in
- let /* optionalError */ _: Error? = optionalError
- let /* databaseReference */ _: DatabaseReference = databaseReference
- }
- #if compiler(>=5.5) && canImport(_Concurrency)
- if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
- // async/await is a Swift 5.5+ feature available on iOS 15+
- Task {
- do {
- // onDisconnectSetValue(_ value:)
- let /* ref */ _: DatabaseReference = try await DatabaseReference()
- .onDisconnectSetValue(value)
- } catch {
- // ...
- }
- }
- }
- #endif // swift(>=5.5)
- databaseReference.onDisconnectSetValue(value, andPriority: priorityAny)
- // onDisconnectSetValue(_ value:andPriority priority:withCompletionBlock block:)
- databaseReference
- .onDisconnectSetValue(value, andPriority: priority) { optionalError, databaseReference in
- let /* optionalError */ _: Error? = optionalError
- let /* databaseReference */ _: DatabaseReference = databaseReference
- }
- #if compiler(>=5.5) && canImport(_Concurrency)
- if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
- // async/await is a Swift 5.5+ feature available on iOS 15+
- Task {
- do {
- // onDisconnectSetValue(_ value:andPriority priority:)
- let /* ref */ _: DatabaseReference = try await DatabaseReference().onDisconnectSetValue(
- value,
- andPriority: priority
- )
- } catch {
- // ...
- }
- }
- }
- #endif // swift(>=5.5)
- // onDisconnectRemoveValue
- databaseReference.onDisconnectRemoveValue()
- // onDisconnectRemoveValue(completionBlock block:)
- databaseReference.onDisconnectRemoveValue { optionalError, databaseReference in
- let /* optionalError */ _: Error? = optionalError
- let /* databaseReference */ _: DatabaseReference = databaseReference
- }
- #if compiler(>=5.5) && canImport(_Concurrency)
- if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
- // async/await is a Swift 5.5+ feature available on iOS 15+
- Task {
- do {
- let /* ref */ _: DatabaseReference = try await DatabaseReference()
- .onDisconnectRemoveValue()
- } catch {
- // ...
- }
- }
- }
- #endif // swift(>=5.5)
- // onDisconnectUpdateChildValues
- databaseReference.onDisconnectUpdateChildValues(values)
- // onDisconnectUpdateChildValues(_ values:withCompletionBlock block:)
- databaseReference.onDisconnectUpdateChildValues(values) { optionalError, databaseReference in
- let /* optionalError */ _: Error? = optionalError
- let /* databaseReference */ _: DatabaseReference = databaseReference
- }
- #if compiler(>=5.5) && canImport(_Concurrency)
- if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
- // async/await is a Swift 5.5+ feature available on iOS 15+
- Task {
- do {
- // onDisconnectUpdateChildValues(_ values:)
- let /* ref */ _: DatabaseReference = try await DatabaseReference()
- .onDisconnectUpdateChildValues(values)
- } catch {
- // ...
- }
- }
- }
- #endif // swift(>=5.5)
- // cancelDisconnectOperations
- databaseReference.cancelDisconnectOperations()
- // cancelDisconnectOperations(completionBlock block:)
- databaseReference.cancelDisconnectOperations { optionalError, databaseReference in
- let /* optionalError */ _: Error? = optionalError
- let /* databaseReference */ _: DatabaseReference = databaseReference
- }
- #if compiler(>=5.5) && canImport(_Concurrency)
- if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
- // async/await is a Swift 5.5+ feature available on iOS 15+
- Task {
- do {
- let /* ref */ _: DatabaseReference = try await DatabaseReference()
- .cancelDisconnectOperations()
- } catch {
- // ...
- }
- }
- }
- #endif // swift(>=5.5)
- // runTransactionBlock
- // runTransactionBlock(_ block:)
- databaseReference.runTransactionBlock { mutableData in
- let /* mutableData */ _: MutableData = mutableData
- return transactionResult
- }
- // runTransactionBlock(_ block:andCompletionBlock completionBlock:)
- databaseReference.runTransactionBlock { mutableData in
- let /* mutableData */ _: MutableData = mutableData
- return transactionResult
- } andCompletionBlock: { optionalError, bool, optionalDataSnapshot in
- let /* optionalError */ _: Error? = optionalError
- let /* bool */ _: Bool = bool
- let /* optionalDataSnapshot */ _: DataSnapshot? = optionalDataSnapshot
- }
- #if compiler(>=5.5) && canImport(_Concurrency)
- if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
- // async/await is a Swift 5.5+ feature available on iOS 15+
- Task {
- do {
- // runTransactionBlock(_ block:)
- let _: (Bool, DataSnapshot) = try await DatabaseReference()
- .runTransactionBlock { mutableData in
- let /* mutableData */ _: MutableData = mutableData
- return TransactionResult()
- }
- } catch {
- // ...
- }
- }
- }
- #endif // swift(>=5.5)
- // runTransactionBlock(_ block:andCompletionBlock completionBlock:withLocalEvents localEvents:)
- databaseReference.runTransactionBlock({ mutableData in
- let /* mutableData */ _: MutableData = mutableData
- return transactionResult
- }, andCompletionBlock: { optionalError, bool, optionalDataSnapshot in
- let /* optionalError */ _: Error? = optionalError
- let /* bool */ _: Bool = bool
- let /* optionalDataSnapshot */ _: DataSnapshot? = optionalDataSnapshot
- }, withLocalEvents: yes)
- // description
- let /* description */ _: String = databaseReference.description()
- // Class methods
- DatabaseReference.goOffline()
- DatabaseReference.goOnline()
- // Instance properties
- let /* parent */ _: DatabaseReference? = databaseReference.parent
- let /* childKey */ _: String? = databaseReference.key
- databaseReference = databaseReference.root
- url = databaseReference.url
- database = databaseReference.database
- // MARK: - DataEventType
- let optionalDataEventType = DataEventType(rawValue: 0)
- switch optionalDataEventType {
- case .childAdded:
- break
- case .childRemoved:
- break
- case .childChanged:
- break
- case .childMoved:
- break
- case .value:
- break
- case .none, .some:
- break
- }
- // MARK: - DataSnapshot
- var dataSnapshot = DataSnapshot()
- // Navigating and inspecting a snapshot
- dataSnapshot = dataSnapshot.childSnapshot(forPath: path)
- let /* hasChild */ _: Bool = dataSnapshot.hasChild(child)
- let /* hasChildren */ _: Bool = dataSnapshot.hasChildren()
- let /* exists */ _: Bool = dataSnapshot.exists()
- // Data export
- let /* value */ _: Any? = dataSnapshot.valueInExportFormat()
- // Properties
- databaseReference = dataSnapshot.ref
- let /* value */ _: Any? = dataSnapshot.value
- let /* uint */ _: UInt = dataSnapshot.childrenCount
- let /* child */ _: String? = dataSnapshot.key
- let /* children */ _: NSEnumerator = dataSnapshot.children
- let /* priority */ _: Any? = dataSnapshot.priority
- // MARK: - MutableData
- var mutableData = MutableData()
- // Inspecting and navigating the data
- let /* hasChildren */ _: Bool = mutableData.hasChildren()
- let /* hasChild */ _: Bool = mutableData.hasChild(atPath: path)
- mutableData = mutableData.childData(byAppendingPath: path)
- // Properties
- let /* value */ _: Any? = mutableData.value
- let /* priority */ _: Any? = mutableData.priority
- let /* uint */ _: UInt = mutableData.childrenCount
- let /* children */ _: NSEnumerator = mutableData.children
- let /* childKey */ _: String? = mutableData.key
- // MARK: - ServerValue
- let nsNumber: NSNumber = 0
- let /* values */ _: [AnyHashable: Any] = ServerValue.timestamp()
- let /* values */ _: [AnyHashable: Any] = ServerValue.increment(nsNumber)
- // MARK: - TransactionResult
- transactionResult = TransactionResult.success(withValue: mutableData)
- transactionResult = TransactionResult.abort()
- }
- }
|