/* * Firebase iOS Client Library * * Copyright © 2013 Firebase - All Rights Reserved * https://www.firebase.com * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * 2. Redistributions in binaryform must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY FIREBASE AS IS AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL FIREBASE BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #import @class Firebase; /** * An FDataSnapshot contains data from a Firebase location. Any time you read * Firebase data, you receive the data as an FDataSnapshot. * * FDataSnapshots are passed to the blocks you attach with observeEventType:withBlock: or observeSingleEvent:withBlock:. * They are efficiently-generated immutable copies of the data at a Firebase location. * They can't be modified and will never change. To modify data at a location, * use a Firebase reference (e.g. with setValue:). */ @interface FDataSnapshot : NSObject /** @name Navigating and inspecting a snapshot */ /** * Get an FDataSnapshot for the location at the specified relative path. * The relative path can either be a simple child key (e.g. 'fred') * or a deeper slash-separated path (e.g. 'fred/name/first'). If the child * location has no data, an empty FDataSnapshot is returned. * * @param childPathString A relative path to the location of child data. * @return The FDataSnapshot for the child location. */ - (FDataSnapshot *) childSnapshotForPath:(NSString *)childPathString; /** * Return YES if the specified child exists. * * @param childPathString A relative path to the location of a potential child. * @return YES if data exists at the specified childPathString, else false. */ - (BOOL) hasChild:(NSString *)childPathString; /** * Return YES if the DataSnapshot has any children. * * @return YES if this snapshot has any children, else NO. */ @property (NS_NONATOMIC_IOSONLY, readonly) BOOL hasChildren; /** * Return YES if the DataSnapshot contains a non-null value. * * @return YES if this snapshot contains a non-null value, otherwise NO. */ @property (NS_NONATOMIC_IOSONLY, readonly) BOOL exists; /** @name Data export */ /** * Returns the raw value at this location, coupled with any metadata, such as priority. * * Priorities, where they exist, are accessible under the ".priority" key in instances of NSDictionary. * For leaf locations with priorities, the value will be under the ".value" key. */ @property (NS_NONATOMIC_IOSONLY, readonly, strong) id valueInExportFormat; /** @name Properties */ /** * Returns the contents of this data snapshot as native types. * * Data types returned: * * NSDictionary * * NSArray * * NSNumber (also includes booleans) * * NSString * * @return The data as a native object. */ @property (strong, readonly, nonatomic) id value; /** * Get the number of children for this DataSnapshot. * * @return An integer indicating the number of children. */ @property (readonly, nonatomic) NSUInteger childrenCount; /** * Get a Firebase reference for the location that this data came from * * @return A Firebase instance for the location of this data */ @property (nonatomic, readonly, strong) Firebase* ref; /** * The key of the location that generated this FDataSnapshot. * * @return An NSString containing the key for the location of this FDataSnapshot. */ @property (strong, readonly, nonatomic) NSString* key; /** * An iterator for snapshots of the child nodes in this snapshot. * You can use the native for..in syntax: * * for (FDataSnapshot* child in snapshot.children) { * ... * } * * @return An NSEnumerator of the children */ @property (strong, readonly, nonatomic) NSEnumerator* children; /** * The priority of the data in this FDataSnapshot. * * @return The priority as a string, or nil if no priority was set. */ @property (strong, readonly, nonatomic) id priority; @end