Swift Firebase-将数据库快照转换为阵列

Swift Firebase-将数据库快照转换为阵列,swift,firebase,firebase-realtime-database,Swift,Firebase,Firebase Realtime Database,我在firebase中有一个组引用,如下所示: 在我的应用程序中将成员列表转换为字符串数组时遇到问题 我是这样获取数据的: //对每个组的引用 设ref=Database.Database().reference().child(“组”).child(snapshot.key) //从引用中获取组数据 ref.observeSingleEvent(of:.值,其中:{(groupSnap))位于 //将数据强制转换为字典[字符串:任意] 如果let dictionary=groupSnap.v

我在firebase中有一个组引用,如下所示:

在我的应用程序中将成员列表转换为字符串数组时遇到问题

我是这样获取数据的:

//对每个组的引用
设ref=Database.Database().reference().child(“组”).child(snapshot.key)
//从引用中获取组数据
ref.observeSingleEvent(of:.值,其中:{(groupSnap))位于
//将数据强制转换为字典[字符串:任意]
如果let dictionary=groupSnap.value为?[字符串:任意]{
//解析每个组对象
如果let group=group.parse(snapshot.key,dictionary){
组。插入(组,位于:0)
}
//用组数组转义
完成(组)
}
})
当前正在解析没有成员的数据:

static func parse(key:String,data:[String:Any])->组?{
将name=数据[“name”]设为!字符串
将category=data[“category”]设为!字符串
让owner=data[“owner”]作为!字符串
返回组(id:key,name:name,category:Group.category(rawValue:category)!,ownerId:owner,members:nil)
}
如何将成员列表转换为组对象的字符串数组

// example data
let data = [
    // "name": ...
    // "category": ...
    // "owner": ...
    "members": [
        "member1": true,
        "member2": false,
        "member3": true,
        "member4": true
    ]
]

// grabbing the members element like you do in your parse function
let members = data["members"] as! [String: Bool]

let membersAsListOfStrings = Array(members.keys)
print(membersAsListOfStrings) // -> ["member4", "member1", "member3", "member2"]

let filteredMembersAsListOfStrings = Array(members.filter { $0.value }.keys)
print(filteredMembersAsListOfStrings) // -> ["member4", "member3", "member1"]
您正在查找
.keys
属性。我相信斯威夫特的所有字典都有这个。这个代码在操场上运行得很好


您正在查找
.keys
属性。我相信斯威夫特的所有字典都有这个。这段代码在操场上运行得很好。

它看起来不像一个数组,它看起来像一个字典
[String:Bool]
我想创建一个只有键的数组,而不是布尔值。它看起来不像数组,它像一个字典
[String:Bool]
我想创建一个只有键的数组,不是布尔人