我正在尝试从我的Swift应用程序中的Parse.com数据库中获取数组。由于某种原因,返回的数组总是为零。我检查了权限以确保我的应用程序可以访问数据,我发现很难找到这个bug的起点。
这是我的代码:
let username = PFUser.currentUser()?.objectId
print("username: \(username)")
let bannedUsers = PFUser.currentUser()!["bannedUsers"] as? NSArray
print("bannedUsers: \(bannedUsers)")
日志输出:
username: Optional("Nmmtb07PoR")
bannedUsers: nil
数组的确切值:
[{"__type":"Pointer","className":"_User","objectId":"mG33sM3fcC"}]
我尝试使用数组的内容,但无论我放入什么内容,无论是指针还是字符串,我总是得到'nil'。我希望你能提供帮助。
答案 0 :(得分:2)
解决:
我添加了
行PFUser.currentUser()?.fetch()
这刷新了用户,我得到了正确的数据,而不是' nil'。希望将来遇到类似问题会有所帮助。
答案 1 :(得分:0)
怎么样:
let bannedUsers = PFUser.currentUser()!.bannedUsers as? NSArray
答案 2 :(得分:0)
尝试使用:PFUser.currentUser()!.objectForKey("bannedUsers")
或PFUser.currentUser()!.valueForKey("bannedUsers")
您的列可能未包含在currentUser对象中,因此您必须查询用户并包含bannedUsers列。 您可以通过以下方式完成此操作:
let query = PFUser.query()
query?.includeKey("bannedUsers")
do {
let user = try query?.getObjectWithId((PFUser.currentUser()?.objectId)!)
let bannedUsers = user?.valueForKey("bannedUsers")
print(bannedUsers)
} catch {
print(error)
}