gpt4 book ai didi

objective-c - 在 SQLite 语句中使用 NSArray

转载 作者:行者123 更新时间:2023-11-30 10:16:32 24 4
gpt4 key购买 nike

我使用SQLite.swift并希望替换声明中的问号。可以对单个条目执行此操作,如下所示:

let stmt = db.prepare("INSERT INTO users (email) VALUES (?)")
for email in ["betty@icloud.com", "cathy@icloud.com"] {
stmt.run(email)
}

我不知道如何执行以下操作来使用类似的数组:

var values:[String] = ["test1","test2", "test3"]

在如下声明中:

let stmt = db.prepare("SELECT * from users where email in (?)")

以下方法不起作用:

stmt.run(values)

如何使用 NSArray 作为语句的参数?

最佳答案

如果您使用类型安全层,则可以使用 contains():

users.filter(contains(["test1", "test2"], email))

// the above assumes this boilerplate precedes it:
let email = Expression<String>("email")
let users = db["users"]

如果您使用原始 SQLite3 API,它不支持数组,因此您需要自己格式化它们:

let emails = ["test1", "test2"]
let template = join(", ", [String](count: count(emails), repeatedValue: "?"))
let stmt = db.prepare(
"SELECT * FROM users WHERE email IN (\(template))", emails
)

关于objective-c - 在 SQLite 语句中使用 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29678874/

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