我无法访问从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'`我无法解决为什么它不起作用?
提前致谢。
答案 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;
}
,但我不知道很快,所以我不知道在哪里。