试图在SWIFT中访问Parse查询数组的下标

时间:2015-04-02 14:57:23

标签: arrays swift parse-platform pfquery

我无法访问从Parses数据库查询过的对象数组的零点下标。代码:

 var query = PFUser.query()
    query.whereKey("location", nearGeoPoint: geopoint, withinMiles: self.distance)
    query.whereKey("objectId", notContainedIn: self.matches)
    query.whereKey("objectId", notEqualTo: self.user.objectId)
    query.limit = 500
    var objects = query.findObjects()
    if objects != nil {
      for object in objects {

            var closestUsers = object as PFUser
            var closestUser = closestUsers[0] //COMPILER ERROR: Type 'String!' does not conform to protocol 'IntegerLiteralConvertible'
    }

如代码所示,我收到编译错误说明:输入'String!'不符合协议'IntegerLiteralConvertible'`我无法解决为什么它不起作用?

提前致谢。

2 个答案:

答案 0 :(得分:1)

我发现很难理解你的代码应该做什么,但是猜测......

尝试:

var query = PFUser.query()
query.whereKey("location", nearGeoPoint: geopoint, withinMiles: self.distance)
query.whereKey("objectId", notContainedIn: self.matches)
query.whereKey("objectId", notEqualTo: self.user.objectId)
query.limit = 500
var users = query.findObjects() as [PFUser]
var closestUser = users.firstObject

在您的代码中

var objects = query.findObjects() // Get response
if objects != nil { // Check if it is nil
  for object in objects { // Iterate over the objects

        var closestUsers = object as PFUser // Get the current user object (I presume here you want an array of users?)
        var closestUser = closestUsers[0] // Get the first user?
}

var closestUsers = object as PFUser不会获取用户数组,而是获取当前用户对象。

我认为你想要数组中的第一个用户对象。在这种情况下,您只需从原始数组中获取第一个对象而不迭代它。

var user = (query.findObjects() as? [PFUser])?.firstObject

答案 1 :(得分:0)

你的逻辑很奇怪,你要么输错了,要么我完全没有得到你正在做的事情。

无论哪种方式,您都有一个类型为objects的{​​{1}}数组。

您将该数组放在另一个数组中(var nearestUsers)。 然后你显然想要一个用户。

您是否尝试过这样做:

并且不必像疯了一样投射一切

PFUser

你可能需要在某个地方添加var query = PFUser.query() query.whereKey("location", nearGeoPoint: geopoint, withinMiles: self.distance) query.whereKey("objectId", notContainedIn: self.matches) query.whereKey("objectId", notEqualTo: self.user.objectId) query.limit = 500 var objects = query.findObjects() if objects != nil { for object in objects { var closestUser = objects.firstObject; } ,但我不知道很快,所以我不知道在哪里。