说我们有这个:
private void checkPaidStatus(){
paidString = "";
FirebaseDatabase.getInstance().getReference("Flats").child(flatID).child("Bills").child(itemSelected).child("paidRecord").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot != null){
Iterator<DataSnapshot> iterable = dataSnapshot.getChildren().iterator();
//this is the bit that needs to be changed to return properly xd good luck
for (Iterator<DataSnapshot> it = iterable; it.hasNext();){
DataSnapshot dataSnapshot1 = it.next();
paidString = paidString + "new" + dataSnapshot1.getValue(String.class);
textViewPaidStatus.setText(paidString);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
这不起作用。我正在进行一些元编程,并寻找一种从对象中读取属性的通用方法。
一种方法是将字符串分成点/句点,如下所示:
const keyv = 'foo.bar.star';
const v = {
foo: {
bar: {
star:'car'
}
}
};
console.log(v[keyv]); // undefined
该解决方案的唯一问题是,如果属性名称中包含点/句点,那么我们就会被搞砸。
所以我试图使用const keys = String(keyv).split('.').filter(Boolean);
const result = keys.reduce(function (a, b) {
return a[b] || '';
}, obj);
console.log(result);
来运行属性查找,如下所示:
eval()
但是这只适用于单个属性,如您所见。我需要能够阅读尽可能多的相关属性。