我有一個表,其中我的資料庫中有三列可以包含一個字串,我需要檢查所有三列并回傳該行資料,如果其中任何列有我正在尋找的內容。
例如,我要查找的字串可能出現在第一列 (firstArtist) 中的一行,但可能出現在第二列 (secondArtist) 中,也可能出現在第三列 (thirdArtist) 中。
我使用 Parse-Swift 而不是 Parse。
壁紙是我的模特班。
我試過這樣的事情:
var testString = "example"
let query = Wallpaper.query()
.where(Wallpaper.CodingKeys.firstArtist.rawValue == testString)
.where(Wallpaper.CodingKeys.secondArtist.rawValue == testString)
.where(Wallpaper.CodingKeys.thirdArtist.rawValue == testString)
但是從資料庫中沒有檢索到任何內容,我認為這是因為由于它沒有找到第一個 where 陳述句的任何內容,因此它不包括其余可能包含字串的結果。
以下作品:
let query = Wallpaper.query()
query.findAll { result in
switch result {
case let .success(wallpapers):
var test: [Wallpaper] = []
for item in wallpapers {
if item.artists.contains(testString) {
test.append(item)
}
}
completion(.success(test))
case let .failure(error):
completion(.failure(error))
}
}
但是回圈遍歷結果并手動過濾它們會導致我的應用程式需要十多秒才能加載結果,因為我正在抓取所有不理想的東西。
如何在 Parse-Swift 中執行相當于 OR 陳述句/復合陳述句的操作?我瀏覽了檔案,但找不到這方面的示例。
我找到了這個存盤庫 Github Parse-Swift Playground,其中包含 Parse-swift Devs 本身的示例,但什么也沒有。
uj5u.com熱心網友回復:
您在查詢中創建的陳述句本質上是一個 AND 陳述句,并且要求鍵位于所有 3 列中。API 檔案顯示有可用的查詢or約束。我建議查看 API 檔案以查看所有可用的功能,因為 Playgrounds 并非旨在實作 Parse-Swift 的所有功能。
您可以通過以下方式實作您的目標:
let query1 = Wallpaper.query(Wallpaper.CodingKeys.firstArtist.rawValue == testString)
let query2 = Wallpaper.query(Wallpaper.CodingKeys.secondArtist.rawValue == testString)
let query3 = Wallpaper.query(Wallpaper.CodingKeys.thirdArtist.rawValue == testString)
let subQueries = [query1, query2, query3]
let query = Wallpaper.query(or(queries: subQueries))
// Using async/await, but completion block will be similar to the code you provided
do {
let wallpapers = try await query.findAll()
print(wallpapers)
} catch {
//Handle error
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/436485.html
上一篇:決議ascii表頭
