我试图编写一个查看表的查询,只返回已存储在数组中的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
)
)
感谢您的指导。
答案 0 :(得分:0)
这是因为它是可选的,如控制台中所述,这来自您声明的?
部分。如果将其更改为!
,您将看到预期的结果。
let allSelectedPacksArray = currentUser?["allSelectedPacks"]
应该成为:
let allSelectedPacksArray = currentUser!["allSelectedPacks"]
答案 1 :(得分:0)
这里的问题是在数组周围使用方括号。
从[allSelectedPacksArray]中删除[],只需拥有allSelectedPacksArray即可。
这很奇怪,因为代码提示括号。但它确实有效。