gpt4 book ai didi

Swift 3 全局函数。我可以这样做吗?

转载 作者:行者123 更新时间:2023-11-30 12:34:39 26 4
gpt4 key购买 nike

是的,我想要简单的方法来使用 swift 3 调用我的全局函数。所以我这样做了,如下所示。我认为有很多方法可以做到这一点。但我认为这是最简单的方法。如果您知道很多,请给一些建议。

import Foundation
import UIKit
import FirebaseDatabase

// Start observe the path value for the new one.
func SMFirdatabaseGetSingleObserveWith(path: String, theSnap: @escaping (FIRDataSnapshot) -> Void) {

var isFirstLoad: Bool = true
FIRDatabase.database().reference().child(path).queryLimited(toLast: 1).observe(.childAdded, with: { (snap) in
if snap.exists() {

if isFirstLoad {

isFirstLoad = false

}else {

theSnap(snap)
}

}
})

}

当我想使用该功能时。我只是像下面这样调用它。

class Message {

var messages: [Int] = []

init() {
getNewMessageIndex()
}

func getNewMessageIndex() {

// Use global function here
SMFirdatabaseGetSingleObserveWith(path: "/Message/\("uid")") { (snap) in
messages.append(snap as! Int)
}
}

}

最佳答案

我会创建一个 MessageController swift 文件,然后将您的 SMFirdatabaseGetSingleObserveWith 放入其中。然后创建一个 MessageController 实例作为共享单例,这将使您可以访问您的 Message 函数。

import Foundation
import UIKit
import FirebaseDatabase

class MessageController {

//MARK: - Properties

static let shared = MessageController()

// Start observe the path value for the new one.
func SMFirdatabaseGetSingleObserveWith(path: String, theSnap: @escaping (FIRDataSnapshot) -> Void) {

var isFirstLoad: Bool = true
FIRDatabase.database().reference().child(path).queryLimited(toLast: 1).observe(.childAdded, with: { (snap) in
if snap.exists() {

if isFirstLoad {

isFirstLoad = false

}else {

theSnap(snap)
}

}
})
}
}

然后从您要去的任何地方调用该函数

MessageController.shared.SMFirdatabaseGetSingleObserveWith(...)

关于Swift 3 全局函数。我可以这样做吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43019708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com