到目前为止,我已经使用java和Firebase开发了Android应用程序。现在我想用Firebase编写我的第一个iOS应用程序。我有这个数据库模型:
我想检索这些对象并将它们存储在一个数组中。我的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).
那么如何以正确的方式检索我的对象?
答案 0 :(得分:0)
您必须将snapshot.value转换为NSDictionary
答案 1 :(得分:0)
您必须将其转换为NSDictionary
refPresets!.observe(.childAdded) { (snapshot) in
let e = snapshot.value as! NSDictionary
print(e)
}