当数组有数据时,解析在Swift中返回空数组

时间:2015-11-08 16:37:29

标签: ios arrays swift parse-platform swift2

我正在尝试从我的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

数据库中显示数组的屏幕截图不是nil: enter image description here

数组的确切值:

[{"__type":"Pointer","className":"_User","objectId":"mG33sM3fcC"}]

我尝试使用数组的内容,但无论我放入什么内容,无论是指针还是字符串,我总是得到'nil'。我希望你能提供帮助。

3 个答案:

答案 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)
}