Parse containsIn查询不返回结果

时间:2017-02-20 06:19:54

标签: swift parse-platform nsmutablearray parse-server

我试图编写一个查看表的查询,只返回已存储在数组中的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

print(allSelectedPacksArray)返回以下内容:

(
    tW4qPPdKSp,
    HnwTkSwcZc,
    zbhe0Kt59Z
)

所以该列包含数据并且是可获取的

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

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

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

控制台打印:

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

感谢您的指导。

2 个答案:

答案 0 :(得分:0)

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

let allSelectedPacksArray = currentUser?["allSelectedPacks"]

应该成为:

let allSelectedPacksArray = currentUser!["allSelectedPacks"]

答案 1 :(得分:0)

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

从[allSelectedPacksArray]中删除[],只需拥有allSelectedPacksArray即可。

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