解析 containedIn 查询不返回结果

Parse containedIn query not returning results

我正在尝试编写一个在 table 中查找的查询,并且只有 returns 个已存储在数组中的 objectId 结果。

我在后端的数组列:

let currentUser = PFUser.current()
let allSelectedPacksArray: NSMutableArray = currentUser?["allSelectedPacks"] as! NSMutableArray
print(allSelectedPacksArray)

安迪查询:

let query = PFQuery(className: "Pack")
query.order(byAscending: "packName")
query.whereKey("objectId", containedIn: [allSelectedPacksArray])
query.fromLocalDatastore()

if error != nil || objects?.isEmpty == true {
print("theres no objects to be had")
} else if let items = objects {

对象为空且控制台打印:

theres no objects to be had

打印(allSelectedPacksArray) returns以下内容:

(
    tW4qPPdKSp,
    HnwTkSwcZc,
    zbhe0Kt59Z
)

所以该列包含数据,它是 gettable

当我删除 containedIn 行时,一切正常。不确定我在这里做错了什么。我没有太多使用 NSMutable 数组,但似乎我必须将数组设置为。

如果我不将其转换为 NSMutable 数组,例如:

let currentUser = PFUser.current()
let allSelectedPacksArray = currentUser?["allSelectedPacks"]
print(allSelectedPacksArray)

控制台打印:

Optional(<__NSArrayM 0x60800005a9d0>(
tW4qPPdKSp,
HnwTkSwcZc,
zbhe0Kt59Z
)
)

感谢指导。

这是因为它是可选的,如控制台中所述,这是来自您声明的 ? 部分。如果将其更改为 !,您将看到预期的结果。

let allSelectedPacksArray = currentUser?["allSelectedPacks"]

应该变成:

let allSelectedPacksArray = currentUser!["allSelectedPacks"]

这里的问题是在数组周围使用了方括号。

从 [allSelectedPacksArray] 中删除 [],只保留 allSelectedPacksArray 和所有作品。

这很奇怪,因为代码提示输入括号。但它有效。