swift - 在需要之前如何声明变量 nil?
问题描述
我刚开始在 Swift 中使用 SQLite 并且遇到了声明问题。我想将所有内容包装在一个类中,然后我可以调用方法。
我的问题是我不知道如何声明 db,以便当我调用 Connect 时,它可以填写为在类存在时始终可用。我可以在初始化时调用 connect,但在需要之前我不想调用 Connect。当我将其编码如下时,我收到以下错误:
从初始化程序返回而不初始化所有存储的属性
class MySQL {
var db : Connection
var dbPath : String
init() {
dbPath = getDocumentsDirectory().absoluteString + "db.sqlite3"
}
func open(){
do{
db = try Connection(dbPath)}
catch{}
let users = Table("users")
print(users)
}
}
解决方案
您可能想使用惰性属性。
惰性存储属性是在第一次使用之前不计算初始值的属性。您可以通过在声明之前编写惰性修饰符来指示惰性存储属性。
class MySQL {
lazy var db : Connection = {
// Make initialisation here
}()
var dbPath : String
...
}
您可以从官方文档中阅读更多信息。
推荐阅读
- swift - Swift获取通用数组的元素类型
- windows - IIS 服务器和客户端
- php - 未定义变量:Laravel 中的访问者
- nginx - nginx 将 /api 重写为 SPA 的根域(单页应用程序)
- javascript - 在 Firestore 中调用函数时未定义的值
- laravel - Laravel 5.7,如何在 Laravel 中解密或查看哈希密码?
- python-3.x - 在下一个对象中追加重复
- python - Python - 使用网络抓取下载视频
- c# - 单击选定的组合框第一个文本框。Focus() 在 C# 中工作不完整
- python - 在类定义参数中调用 self.variable(在 __init__() 中建立)