将FIRDataSnapshot转换为自定义类型

时间:2016-07-13 18:40:06

标签: swift firebase closures firebase-realtime-database

我正在尝试将FIRDataSnapshot转换为自定义类型(即我知道每个孩子 将有一个姓名,号码和电子邮件)

当我运行下面的代码时,一个JSON树将每个包含Name,Number和Email的子项打印到控制台。

所以我想将快照存储为具有每个属性的自定义类型“PersonInfo”。这样我可以在我的应用程序中更改此数据。我需要使用“PersonInfo”变量将这些数据存储到我的应用程序的各个部分。

    ref.observeSingleEventOfType(.Value, withBlock: { (snapshot: FIRDataSnapshot) in

        print(snapshot)

    })

2 个答案:

答案 0 :(得分:10)

您可以定义一个将充当模型的自定义类PersonInfo。

class PersonInfo: NSObject {
    var pName: String
    var pNumber :String
    var pEmail: String
    let ref: FIRDatabaseReference?

    init( name: String, number: String, email: String) {
        self.pName = name
        self.pNumber = number
        self.pEmail = email
        self.ref = nil
    }

    init(snapshot: FIRDataSnapshot) {
        pName = snapshot.value!["pName"] as! String
        pNumber = snapshot.value!["pNumber"] as! String
        pEmail = snapshot.value!["pEmail"] as! String
        ref = snapshot.ref
    }

    convenience override init() {
        self.init(name:"",number: "", email: "")
    }
}

当您拥有observeSingleEventOfType时,在snapshot内,您可以迭代其子项并将每个人提取为:

for item in snapshot.children{
  var person = PersonInfo(snapshot:item);
  yourList.append(person);
}

因此,您将获得一个PersonInfo模型对象的列表,您可以稍后访问它们。

答案 1 :(得分:0)

在目标c中你可以这样做:

标题文件:

namespace mynamespace
{
    public class myclass
    {
        public myclass()
        {
        }
        public myclass(string nomPrecio, string nomPrecioEN, int IDrangoPrecio, int IDPoblacionMv, int NumOfertas, int NumOVotaciones, string Imagen)
        {
            this.nomPrecio = nomPrecio;
            this.nomPrecioEN = nomPrecioEN;
            this.IDrangoPrecio = IDrangoPrecio;
            this.IDPoblacionMv = IDPoblacionMv;
            this.NumOfertas = NumOfertas;
            this.NumOVotaciones = NumOVotaciones;
            this.Imagen = Imagen;
        }
        public string nomPrecio { get; set; }
        public string nomPrecioEN { get; set; }
        public int IDrangoPrecio { get; set; }
        public int IDPoblacionMv { get; set; }
        public int NumOfertas { get; set; }
        public int NumOVotaciones { get; set; }
        public string Imagen { get; set; }
    }
}

源文件:

#import <Foundation/Foundation.h>
#import <FirebaseDatabase/FirebaseDatabase.h>

@interface RTAObject : NSObject

@property (nonatomic) NSString pName;
@property (nonatomic) NSString * pNumber;
@property (nonatomic) NSString * pEmail;

-(id) init:(NSString) pName : (NSString*) name :(NSString*) pNumber :(NSString*) pEmail ;

@end