swift - 无返回值

标签 swift

此函数返回空数组有什么原因吗?我已经通过调试器运行它,for 循环正在工作,并将用户附加到 newUsers 数组中,但当它完成并返回值时,它是空的。

func fetchUsers(ref:FIRDatabaseReference) -> [User] {
        var newUsers = [User]()
        ref.observeEventType(.Value, withBlock: {snapshot in
            for user in snapshot.children {
                let users = User(snapshot: user as! FIRDataSnapshot)
                newUsers.append(users)
            }
        })
        print("closure exited. There are \(newUsers.count) Users in newUsers")
        return newUsers
    }

最佳答案

使用完成,因为您处于异步 block 中。试试这个

func fetchUsers(ref:FIRDatabaseReference, completion(users: [Users])) {
    var newUsers = [User]()
    ref.observeEventType(.Value, withBlock: {snapshot in
        for user in snapshot.children {
            let users = User(snapshot: user as! FIRDataSnapshot)
            newUsers.append(users)
        }
        print("closure exited. There are \(newUsers.count) Users in newUsers")
        completion(users: newUsers)
    })

}

关于swift - 无返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38086503/

相关文章:

swift - 返回用户输入的数据类型

ios - 如何使用泛型作为参数?(Swift 2.0)

ios - 当使用 UITableView 选择一行时,如何显示不同的结果?

ios - UICollectionViewListCell 的自定义子类中的自调整大小在 iOS 14 中不起作用

ios - 移动和/或删除 ArcGIS 图形图层中的标记

Swift 约束警告

dynamic - swift : Parse subclass dynamic var dont get included when retrieving object

ios - Xcode 调试器崩溃 (Xcode 6.1/LLDB/Yosemite)

ios - 如何快速返回任何对象的列表?

swift - swift 中的(设置)关键字