【问题标题】:trying to access the subscript of a Parse query array in SWIFT试图在 SWIFT 中访问 Parse 查询数组的下标
【发布时间】:2015-04-02 14:57:22
【问题描述】:

我在访问已从 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'
    }

如代码所示,我收到一个编译器错误说明:Type 'String!'不符合协议'IntegerLiteralConvertible'`我不知道为什么它不起作用?

提前致谢。

【问题讨论】:

  • var closestUser = closestUser[0] 指的是自己。你的意思是var closestUser = closestUsers[0]? (虽然这段代码在我看来也是错误的)
  • 是的,抱歉,现在编辑代码
  • 你能告诉我怎么错了吗?
  • 你有一个由单个用户组成的用户数组还是我读错了?
  • 认为你读错了,它只是一个带有 whereKey 过滤器的基本查询

标签: arrays swift parse-platform pfquery


【解决方案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

【讨论】:

  • 很高兴为您提供帮助,如果这解决了问题,请您接受它作为答案吗?
【解决方案2】:

你的逻辑很奇怪,你要么输入错误,要么我完全不明白你在做什么。

无论哪种方式,您都有一个 objects 数组,其类型为 PFUser

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

您是否尝试过像这样简单地这样做:

不必像疯了似的把所有东西都扔掉

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;
    }

您可能需要在某处添加为 PFUser,但我不知道 swift 所以我不知道在哪里。

【讨论】:

    猜你喜欢
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    相关资源
    最近更新 更多