You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Firebase实时数据库中提取无对应键的拆分训练计划名称

解决方案

你要的拆分计划名称本身就是splits节点下所有子节点的键(Key),不需要额外配置专属字段,直接从你拉取到的splits节点快照中提取所有子节点的key即可,以下是iOS端Swift的实现代码:

import FirebaseDatabase
import FirebaseAuth

func fetchSplitPlanNames(completion: @escaping ([String]) -> Void) {
    // 1. 获取当前登录用户的splits节点引用
    guard let userId = Auth.auth().currentUser?.uid else {
        completion([])
        return
    }
    let splitsRef = Database.database().reference()
        .child(userId)
        .child("splits")
    
    // 2. 拉取splits节点快照并提取计划名称
    splitsRef.observeSingleEvent(of: .value) { snapshot in
        guard snapshot.exists() else {
            completion([])
            return
        }
        // 提取方式1:遍历快照子节点获取key
        var planNames = [String]()
        for child in snapshot.children.allObjects as? [DataSnapshot] ?? [] {
            planNames.append(child.key)
        }
        completion(planNames)
        
        // 提取方式2:转字典后直接取所有key(和方式1效果一致,二选一即可)
        // if let splitsDict = snapshot.value as? [String: Any] {
        //     completion(Array(splitsDict.keys))
        // }
    }
}

逻辑说明

  • 两种提取方式效果完全一致,示例场景下最终返回结果就是["Test-Split", "Test-Split-2"]
  • 如果后续需要同步展示计划的额外属性(比如总训练天数、总动作数量),可以在遍历子节点的同时读取对应子节点的属性即可

内容的提问来源于stack exchange,提问作者Nick Mcmullan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 20:27:05