Firebase:检索为对象/模型。来自Java

时间:2018-04-05 13:56:12

标签: ios swift firebase

到目前为止,我已经使用java和Firebase开发了Android应用程序。现在我想用Firebase编写我的第一个iOS应用程序。我有这个数据库模型:

enter image description here

我想检索这些对象并将它们存储在一个数组中。我的ExercisePresets模型看起来像这样:

class ExercisePreset {
var key : String?
var name : String?
var type : String = "Dynamic";
var progressions : [String] = [String]();

//@Exclude
var selected : Bool = false;

init() { }

convenience init(name : String, type : String) {
    self.init();
    self.name = name;
    self.type = type;
}

}

在Java中,我可以将快照作为我的模型的对象获取,如下所示:

fb.getRefUserPresets(null).addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            ExcersisePresets e = dataSnapshot.getValue(ExcersisePresets.class);
            e.setKey(dataSnapshot.getKey());
            presets.add(e);
        }
}

但我不知道这对swift有何用处。我试过这个:

refPresets!.observe(.childAdded) { (snapshot) in

        let e = snapshot.value as! ExercisePreset;
    }

但是我收到了这个错误:

Could not cast value of type '__NSDictionaryM' (0x109d594f8) to 'TrainingsLog.ExercisePreset' (0x106a30408).

那么如何以正确的方式检索我的对象?

2 个答案:

答案 0 :(得分:0)

您必须将snapshot.value转换为NSDictionary

答案 1 :(得分:0)

您必须将其转换为NSDictionary

refPresets!.observe(.childAdded) { (snapshot) in

    let e = snapshot.value as! NSDictionary

   print(e)
}