在 swift 中声明变量

declare variable in swift

我有这段代码,我的问题是,如何声明变量“连接”到全局变量?我需要在我的项目中为其他功能共享连接

var 连接 = ???

do {
var configuration = PostgresClientKit.ConnectionConfiguration()
configuration.host = "127.0.0.1"
configuration.database = "example"
configuration.user = "bob"
configuration.credential = .scramSHA256(password: "welcome1")

let connection = try PostgresClientKit.Connection(configuration: configuration)
let text = "SELECT start();"
try connection.prepareStatement(text: text).execute()
} catch {
print(error)
}

我试过使用 struct,但我仍然对声明 conn 有问题 - 类型“[conn]”的值没有成员'prepareStatement'知道吗?

import UIKit
import PostgresClientKit

struct conn {
    let conn : Connection
}
var myconnection = [conn]()

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        do {
            var configuration = PostgresClientKit.ConnectionConfiguration()
            configuration.host = "127.0.0.1"
            configuration.database = "example"
            configuration.user = "bob"
            configuration.credential = .scramSHA256(password: "welcome1")

            let aaa = try PostgresClientKit.Connection(configuration: configuration)
            let bbb = conn ( conn: aaa)
            myconnection.append(bbb)
            
            let text = "SELECT start();"
            try myconnection.prepareStatement(text: text).execute()
            
            
        } catch {
            print(error) // better error handling goes here
        }
        
        
    }

我不确定我是否理解您的意图,但我想我明白了您的问题。您的代码在此行失败:

try myconnection.prepareStatement(text: text).execute()

但是 myconnection,正如您在上面声明的那样,属于 [conn]:

类型
var myconnection = [conn]()

如果您想在数组的第一个元素上调用 prepareStatement(text:),您可以这样做:

try myconnection[0].conn.prepareStatement(text: text).execute()

您需要中间的 .conn,因为该数组是 conn 结构的数组,其中 conn 属性实际上是 Connection 类型。


值得注意的是,至少在此函数中,您可以在 aaa 上调用 prepareStatement(text:),然后再从中创建 bbb 并将其存储在数组中。